ETH Price: $3,993.11 (-0.69%)
Gas: 10.5 Gwei

Contract

0x833882E76F4967b9B18F52d70640bFcC82aa91E9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer115305042020-12-26 16:45:501443 days ago1609001150IN
0x833882E7...C82aa91E9
0 ETH0.00433637116.78571584
Transfer58296712018-06-21 17:44:252362 days ago1529603065IN
0x833882E7...C82aa91E9
0 ETH0.0017797948
Transfer44028242017-10-21 16:06:092605 days ago1508601969IN
0x833882E7...C82aa91E9
0.005 ETH0.00088221
Transfer44028122017-10-21 16:03:032605 days ago1508601783IN
0x833882E7...C82aa91E9
0.005 ETH0.0000211
Get All The Fund...40947182017-07-30 11:30:162688 days ago1501414216IN
0x833882E7...C82aa91E9
0 ETH0.003048360
Transfer37169972017-05-16 15:48:312763 days ago1494949711IN
0x833882E7...C82aa91E9
0 ETH0.00781016211
Transfer36324912017-05-01 14:36:582778 days ago1493649418IN
0x833882E7...C82aa91E9
0 ETH0.0004907620
Transfer36324502017-05-01 14:24:492778 days ago1493648689IN
0x833882E7...C82aa91E9
0 ETH0.000440320
Redeem Proposal ...35342402017-04-14 13:22:532795 days ago1492176173IN
0x833882E7...C82aa91E9
0 ETH0.0008392420
Submit Ether Pro...34749402017-04-04 10:49:342805 days ago1491302974IN
0x833882E7...C82aa91E9
0 ETH0.007866220
Redeem Proposal ...34748832017-04-04 10:34:542805 days ago1491302094IN
0x833882E7...C82aa91E9
0 ETH0.0008379620
Submit Ether Pro...33751202017-03-18 16:11:122822 days ago1489853472IN
0x833882E7...C82aa91E9
0 ETH0.005357120
Redeem Proposal ...33516472017-03-14 18:24:282826 days ago1489515868IN
0x833882E7...C82aa91E9
0 ETH0.0008392420
Redeem Proposal ...33105012017-03-07 21:11:182833 days ago1488921078IN
0x833882E7...C82aa91E9
0 ETH0.0017204441
Redeem Proposal ...33104952017-03-07 21:09:502833 days ago1488920990IN
0x833882E7...C82aa91E9
0 ETH0.0011927341
Redeem Proposal ...33104912017-03-07 21:08:242833 days ago1488920904IN
0x833882E7...C82aa91E9
0 ETH0.0011927341
Redeem Proposal ...33104842017-03-07 21:06:452833 days ago1488920805IN
0x833882E7...C82aa91E9
0 ETH0.0011927341
Redeem Proposal ...33104792017-03-07 21:06:052833 days ago1488920765IN
0x833882E7...C82aa91E9
0 ETH0.0011927341
Redeem Proposal ...33104732017-03-07 21:04:382833 days ago1488920678IN
0x833882E7...C82aa91E9
0 ETH0.0011927341
Redeem Proposal ...33092502017-03-07 16:14:092833 days ago1488903249IN
0x833882E7...C82aa91E9
0 ETH0.0013024841
Redeem Proposal ...33092402017-03-07 16:12:312833 days ago1488903151IN
0x833882E7...C82aa91E9
0 ETH0.0803188620
Submit Ether Pro...32869292017-03-03 22:47:362836 days ago1488581256IN
0x833882E7...C82aa91E9
0 ETH0.0109820541
Submit Ether Pro...32021632017-02-17 21:06:572851 days ago1487365617IN
0x833882E7...C82aa91E9
0 ETH0.0122120541
Burn Remain Toke...29755132017-01-11 9:19:152888 days ago1484126355IN
0x833882E7...C82aa91E9
0 ETH0.0003753820
Disable Token Is...29457482017-01-06 11:29:472893 days ago1483702187IN
0x833882E7...C82aa91E9
0 ETH0.0002811820
View all transactions

Latest 5 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
40947182017-07-30 11:30:162688 days ago1501414216
0x833882E7...C82aa91E9
102.377 ETH
35342402017-04-14 13:22:532795 days ago1492176173
0x833882E7...C82aa91E9
100.541 ETH
34748832017-04-04 10:34:542805 days ago1491302094
0x833882E7...C82aa91E9
100.541 ETH
33516472017-03-14 18:24:282826 days ago1489515868
0x833882E7...C82aa91E9
100.541 ETH
33105012017-03-07 21:11:182833 days ago1488921078
0x833882E7...C82aa91E9
100.541 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DSTContract

Compiler Version
v0.4.6+commit.2dabbdf0

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2016-12-22
*/

pragma solidity ^0.4.0;

/*
 * Token - is a smart contract interface 
 * for managing common functionality of 
 * a token.
 *
 * ERC.20 Token standard: https://github.com/eth ereum/EIPs/issues/20
 */
contract TokenInterface {

        
    // total amount of tokens
    uint totalSupply;

    
    /**
     *
     * balanceOf() - constant function check concrete tokens balance  
     *
     *  @param owner - account owner
     *  
     *  @return the value of balance 
     */                               
    function balanceOf(address owner) constant returns (uint256 balance);
    
    function transfer(address to, uint256 value) returns (bool success);

    function transferFrom(address from, address to, uint256 value) returns (bool success);

    /**
     *
     * approve() - function approves to a person to spend some tokens from 
     *           owner balance. 
     *
     *  @param spender - person whom this right been granted.
     *  @param value   - value to spend.
     * 
     *  @return true in case of succes, otherwise failure
     * 
     */
    function approve(address spender, uint256 value) returns (bool success);

    /**
     *
     * allowance() - constant function to check how much is 
     *               permitted to spend to 3rd person from owner balance
     *
     *  @param owner   - owner of the balance
     *  @param spender - permitted to spend from this balance person 
     *  
     *  @return - remaining right to spend 
     * 
     */
    function allowance(address owner, address spender) constant returns (uint256 remaining);

    // events notifications
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


/*
 * StandardToken - is a smart contract  
 * for managing common functionality of 
 * a token.
 *
 * ERC.20 Token standard: 
 *         https://github.com/eth ereum/EIPs/issues/20
 */
contract StandardToken is TokenInterface {


    // token ownership
    mapping (address => uint256) balances;

    // spending permision management
    mapping (address => mapping (address => uint256)) allowed;
    
    
    
    function StandardToken(){
    }
    
    
    /**
     * transfer() - transfer tokens from msg.sender balance 
     *              to requested account
     *
     *  @param to    - target address to transfer tokens
     *  @param value - ammount of tokens to transfer
     *
     *  @return - success / failure of the transaction
     */    
    function transfer(address to, uint256 value) returns (bool success) {
        
        
        if (balances[msg.sender] >= value && value > 0) {

            // do actual tokens transfer       
            balances[msg.sender] -= value;
            balances[to]         += value;
            
            // rise the Transfer event
            Transfer(msg.sender, to, value);
            return true;
        } else {
            
            return false; 
        }
    }
    
    

    
    /**
     * transferFrom() - 
     *
     *  @param from  - 
     *  @param to    - 
     *  @param value - 
     *
     *  @return 
     */
    function transferFrom(address from, address to, uint256 value) returns (bool success) {
    
        if ( balances[from] >= value && 
             allowed[from][msg.sender] >= value && 
             value > 0) {
                                          
    
            // do the actual transfer
            balances[from] -= value;    
            balances[to] =+ value;            
            

            // addjust the permision, after part of 
            // permited to spend value was used
            allowed[from][msg.sender] -= value;
            
            // rise the Transfer event
            Transfer(from, to, value);
            return true;
        } else { 
            
            return false; 
        }
    }

    

    
    /**
     *
     * balanceOf() - constant function check concrete tokens balance  
     *
     *  @param owner - account owner
     *  
     *  @return the value of balance 
     */                               
    function balanceOf(address owner) constant returns (uint256 balance) {
        return balances[owner];
    }

    
    
    /**
     *
     * approve() - function approves to a person to spend some tokens from 
     *           owner balance. 
     *
     *  @param spender - person whom this right been granted.
     *  @param value   - value to spend.
     * 
     *  @return true in case of succes, otherwise failure
     * 
     */
    function approve(address spender, uint256 value) returns (bool success) {
        
        // now spender can use balance in 
        // ammount of value from owner balance
        allowed[msg.sender][spender] = value;
        
        // rise event about the transaction
        Approval(msg.sender, spender, value);
        
        return true;
    }

    /**
     *
     * allowance() - constant function to check how mouch is 
     *               permited to spend to 3rd person from owner balance
     *
     *  @param owner   - owner of the balance
     *  @param spender - permited to spend from this balance person 
     *  
     *  @return - remaining right to spend 
     * 
     */
    function allowance(address owner, address spender) constant returns (uint256 remaining) {
      return allowed[owner][spender];
    }

}


/**
 *
 * @title Hacker Gold
 * 
 * The official token powering the hack.ether.camp virtual accelerator.
 * This is the only way to acquire tokens from startups during the event.
 *
 * Whitepaper https://hack.ether.camp/whitepaper
 *
 */
contract HackerGold is StandardToken {

    // Name of the token    
    string public name = "HackerGold";

    // Decimal places
    uint8  public decimals = 3;
    // Token abbreviation        
    string public symbol = "HKG";
    
    // 1 ether = 200 hkg
    uint BASE_PRICE = 200;
    // 1 ether = 150 hkg
    uint MID_PRICE = 150;
    // 1 ether = 100 hkg
    uint FIN_PRICE = 100;
    // Safety cap
    uint SAFETY_LIMIT = 4000000 ether;
    // Zeros after the point
    uint DECIMAL_ZEROS = 1000;
    
    // Total value in wei
    uint totalValue;
    
    // Address of multisig wallet holding ether from sale
    address wallet;

    // Structure of sale increase milestones
    struct milestones_struct {
      uint p1;
      uint p2; 
      uint p3;
      uint p4;
      uint p5;
      uint p6;
    }
    // Milestones instance
    milestones_struct milestones;
    
    /**
     * Constructor of the contract.
     * 
     * Passes address of the account holding the value.
     * HackerGold contract itself does not hold any value
     * 
     * @param multisig address of MultiSig wallet which will hold the value
     */
    function HackerGold(address multisig) {
        
        wallet = multisig;

        // set time periods for sale
        milestones = milestones_struct(
        
          1476972000,  // P1: GMT: 20-Oct-2016 14:00  => The Sale Starts
          1478181600,  // P2: GMT: 03-Nov-2016 14:00  => 1st Price Ladder 
          1479391200,  // P3: GMT: 17-Nov-2016 14:00  => Price Stable, 
                       //                                Hackathon Starts
          1480600800,  // P4: GMT: 01-Dec-2016 14:00  => 2nd Price Ladder
          1481810400,  // P5: GMT: 15-Dec-2016 14:00  => Price Stable
          1482415200   // P6: GMT: 22-Dec-2016 14:00  => Sale Ends, Hackathon Ends
        );
                
    }
    
    
    /**
     * Fallback function: called on ether sent.
     * 
     * It calls to createHKG function with msg.sender 
     * as a value for holder argument
     */
    function () payable {
        createHKG(msg.sender);
    }
    
    /**
     * Creates HKG tokens.
     * 
     * Runs sanity checks including safety cap
     * Then calculates current price by getPrice() function, creates HKG tokens
     * Finally sends a value of transaction to the wallet
     * 
     * Note: due to lack of floating point types in Solidity,
     * contract assumes that last 3 digits in tokens amount are stood after the point.
     * It means that if stored HKG balance is 100000, then its real value is 100 HKG
     * 
     * @param holder token holder
     */
    function createHKG(address holder) payable {
        
        if (now < milestones.p1) throw;
        if (now >= milestones.p6) throw;
        if (msg.value == 0) throw;
    
        // safety cap
        if (getTotalValue() + msg.value > SAFETY_LIMIT) throw; 
    
        uint tokens = msg.value * getPrice() * DECIMAL_ZEROS / 1 ether;

        totalSupply += tokens;
        balances[holder] += tokens;
        totalValue += msg.value;
        
        if (!wallet.send(msg.value)) throw;
    }
    
    /**
     * Denotes complete price structure during the sale.
     *
     * @return HKG amount per 1 ETH for the current moment in time
     */
    function getPrice() constant returns (uint result) {
        
        if (now < milestones.p1) return 0;
        
        if (now >= milestones.p1 && now < milestones.p2) {
        
            return BASE_PRICE;
        }
        
        if (now >= milestones.p2 && now < milestones.p3) {
            
            uint days_in = 1 + (now - milestones.p2) / 1 days; 
            return BASE_PRICE - days_in * 25 / 7;  // daily decrease 3.5
        }

        if (now >= milestones.p3 && now < milestones.p4) {
        
            return MID_PRICE;
        }
        
        if (now >= milestones.p4 && now < milestones.p5) {
            
            days_in = 1 + (now - milestones.p4) / 1 days; 
            return MID_PRICE - days_in * 25 / 7;  // daily decrease 3.5
        }

        if (now >= milestones.p5 && now < milestones.p6) {
        
            return FIN_PRICE;
        }
        
        if (now >= milestones.p6){

            return 0;
        }

     }
    
    /**
     * Returns total stored HKG amount.
     * 
     * Contract assumes that last 3 digits of this value are behind the decimal place. i.e. 10001 is 10.001
     * Thus, result of this function should be divided by 1000 to get HKG value
     * 
     * @return result stored HKG amount
     */
    function getTotalSupply() constant returns (uint result) {
        return totalSupply;
    } 

    /**
     * It is used for test purposes.
     * 
     * Returns the result of 'now' statement of Solidity language
     * 
     * @return unix timestamp for current moment in time
     */
    function getNow() constant returns (uint result) {
        return now;
    }

    /**
     * Returns total value passed through the contract
     * 
     * @return result total value in wei
     */
    function getTotalValue() constant returns (uint result) {
        return totalValue;  
    }
}

contract DSTContract is StandardToken{

    // Zeros after the point
    uint DECIMAL_ZEROS = 1000;
    // Proposal lifetime
    uint PROPOSAL_LIFETIME = 10 days;
    // Proposal funds threshold, in percents
    uint PROPOSAL_FUNDS_TH = 20;

    address   executive; 
        
    EventInfo eventInfo;
    
    // Indicated where the DST is traded
    address virtualExchangeAddress;
    
    HackerGold hackerGold;
        
    mapping (address => uint256) votingRights;


    // 1 - HKG => DST qty; tokens for 1 HKG
    uint hkgPrice;
    
    // 1 - Ether => DST qty; tokens for 1 Ether
    uint etherPrice;
    
    string public name = "...";                   
    uint8  public decimals = 3;                 
    string public symbol = "...";
    
    bool ableToIssueTokens = true; 
    
    uint preferedQtySold;

    uint collectedHKG; 
    uint collectedEther;    
    
    // Proposal of the funds spending
    mapping (bytes32 => Proposal) proposals;

    enum ProposalCurrency { HKG, ETHER }
    ProposalCurrency enumDeclaration;
                  
       
    struct Proposal{
        
        bytes32 id;
        uint value;

        string urlDetails;

        uint votindEndTS;
                
        uint votesObjecting;
        
        address submitter;
        bool redeemed;

        ProposalCurrency proposalCurrency;
        
        mapping (address => bool) voted;
    }
    uint counterProposals;
    uint timeOfLastProposal;
    
    Proposal[] listProposals;
    

    /**
     * Impeachment process proposals
     */    
    struct ImpeachmentProposal{
        
        string urlDetails;
        
        address newExecutive;

        uint votindEndTS;        
        uint votesSupporting;
        
        mapping (address => bool) voted;        
    }
    ImpeachmentProposal lastImpeachmentProposal;

        
    /**
     * 
     *  DSTContract: ctor for DST token and governence contract
     *
     *  @param eventInfoAddr EventInfo: address of object denotes events 
     *                                  milestones      
     *  @param hackerGoldAddr HackerGold: address of HackerGold token
     *
     *  @param dstName string: dstName: real name of the team
     *
     *  @param dstSymbol string: 3 letter symbold of the team
     *
     */ 
    function DSTContract(EventInfo eventInfoAddr, HackerGold hackerGoldAddr, string dstName, string dstSymbol){
    
      executive   = msg.sender;  
      name        = dstName;
      symbol      = dstSymbol;

      hackerGold = HackerGold(hackerGoldAddr);
      eventInfo  = EventInfo(eventInfoAddr);
    }
    

    function() payable
               onlyAfterEnd {
        
        // there is tokens left from hackathon 
        if (etherPrice == 0) throw;
        
        uint tokens = msg.value * etherPrice * DECIMAL_ZEROS / (1 ether);
        
        // check if demand of tokens is 
        // overflow the supply 
        uint retEther = 0;
        if (balances[this] < tokens) {
            
            tokens = balances[this];
            retEther = msg.value - tokens / etherPrice * (1 finney);
        
            // return left ether 
            if (!msg.sender.send(retEther)) throw;
        }
        
        
        // do transfer
        balances[msg.sender] += tokens;
        balances[this] -= tokens;
        
        // count collected ether 
        collectedEther += msg.value - retEther; 
        
        // rise event
        BuyForEtherTransaction(msg.sender, collectedEther, totalSupply, etherPrice, tokens);
        
    }

    
    
    /**
     * setHKGPrice - set price: 1HKG => DST tokens qty
     *
     *  @param qtyForOneHKG uint: DST tokens for 1 HKG
     * 
     */    
     function setHKGPrice(uint qtyForOneHKG) onlyExecutive  {
         
         hkgPrice = qtyForOneHKG;
         PriceHKGChange(qtyForOneHKG, preferedQtySold, totalSupply);
     }
     
     
    
    /**
     * 
     * issuePreferedTokens - prefered tokens issued on the hackathon event
     *                       grant special rights
     *
     *  @param qtyForOneHKG uint: price DST tokens for one 1 HKG
     *  @param qtyToEmit uint: new supply of tokens 
     * 
     */
    function issuePreferedTokens(uint qtyForOneHKG, 
                                 uint qtyToEmit) onlyExecutive 
                                                 onlyIfAbleToIssueTokens
                                                 onlyBeforeEnd
                                                 onlyAfterTradingStart {
                
        // no issuence is allowed before enlisted on the
        // exchange 
        if (virtualExchangeAddress == 0x0) throw;
            
        totalSupply    += qtyToEmit;
        balances[this] += qtyToEmit;
        hkgPrice = qtyForOneHKG;
        
        
        // now spender can use balance in 
        // amount of value from owner balance
        allowed[this][virtualExchangeAddress] += qtyToEmit;
        
        // rise event about the transaction
        Approval(this, virtualExchangeAddress, qtyToEmit);
        
        // rise event 
        DstTokensIssued(hkgPrice, preferedQtySold, totalSupply, qtyToEmit);
    }

    
    
    
    /**
     * 
     * buyForHackerGold - on the hack event this function is available 
     *                    the buyer for hacker gold will gain votes to 
     *                    influence future proposals on the DST
     *    
     *  @param hkgValue - qty of this DST tokens for 1 HKG     
     * 
     */
    function buyForHackerGold(uint hkgValue) onlyBeforeEnd 
                                             returns (bool success) {
    
      // validate that the caller is official accelerator HKG Exchange
      if (msg.sender != virtualExchangeAddress) throw;
      
      
      // transfer token 
      address sender = tx.origin;
      uint tokensQty = hkgValue * hkgPrice;

      // gain voting rights
      votingRights[sender] +=tokensQty;
      preferedQtySold += tokensQty;
      collectedHKG += hkgValue;

      // do actual transfer
      transferFrom(this, 
                   virtualExchangeAddress, tokensQty);
      transfer(sender, tokensQty);        
            
      // rise event       
      BuyForHKGTransaction(sender, preferedQtySold, totalSupply, hkgPrice, tokensQty);
        
      return true;
    }
        
    
    /**
     * 
     * issueTokens - function will issue tokens after the 
     *               event, able to sell for 1 ether 
     * 
     *  @param qtyForOneEther uint: DST tokens for 1 ETH
     *  @param qtyToEmit uint: new tokens supply
     *
     */
    function issueTokens(uint qtyForOneEther, 
                         uint qtyToEmit) onlyAfterEnd 
                                         onlyExecutive
                                         onlyIfAbleToIssueTokens {
         
         balances[this] += qtyToEmit;
         etherPrice = qtyForOneEther;
         totalSupply    += qtyToEmit;
         
         // rise event  
         DstTokensIssued(qtyForOneEther, totalSupply, totalSupply, qtyToEmit);
    }
     
    
    /**
     * setEtherPrice - change the token price
     *
     *  @param qtyForOneEther uint: new price - DST tokens for 1 ETH
     */     
    function setEtherPrice(uint qtyForOneEther) onlyAfterEnd
                                                onlyExecutive {
         etherPrice = qtyForOneEther; 

         // rise event for this
         NewEtherPrice(qtyForOneEther);
    }    
    

    /**
     *  disableTokenIssuance - function will disable any 
     *                         option for future token 
     *                         issuence
     */
    function disableTokenIssuance() onlyExecutive {
        ableToIssueTokens = false;
        
        DisableTokenIssuance();
    }

    
    /**
     *  burnRemainToken -  eliminated all available for sale
     *                     tokens. 
     */
    function burnRemainToken() onlyExecutive {
    
        totalSupply -= balances[this];
        balances[this] = 0;
        
        // rise event for this
        BurnedAllRemainedTokens();
    }
    
    /**
     *  submitEtherProposal: submit proposal to use part of the 
     *                       collected ether funds
     *
     *   @param requestValue uint: value in wei 
     *   @param url string: details of the proposal 
     */ 
    function submitEtherProposal(uint requestValue, string url) onlyAfterEnd 
                                                                onlyExecutive returns (bytes32 resultId, bool resultSucces) {       
    
        // ensure there is no more issuence available 
        if (ableToIssueTokens) throw;
            
        // ensure there is no more tokens available 
        if (balanceOf(this) > 0) throw;

        // Possible to submit a proposal once 2 weeks 
        if (now < (timeOfLastProposal + 2 weeks)) throw;
            
        uint percent = collectedEther / 100;
            
        if (requestValue > PROPOSAL_FUNDS_TH * percent) throw;

        // if remained value is less than requested gain all.
        if (requestValue > this.balance) 
            requestValue = this.balance;    
            
        // set id of the proposal
        // submit proposal to the map
        bytes32 id = sha3(msg.data, now);
        uint timeEnds = now + PROPOSAL_LIFETIME; 
            
        Proposal memory newProposal = Proposal(id, requestValue, url, timeEnds, 0, msg.sender, false, ProposalCurrency.ETHER);
        proposals[id] = newProposal;
        listProposals.push(newProposal);
            
        timeOfLastProposal = now;                        
        ProposalRequestSubmitted(id, requestValue, timeEnds, url, msg.sender);
        
        return (id, true);
    }
    
    
     
    /**
     * 
     * submitHKGProposal - submit proposal to request for 
     *                     partial HKG funds collected 
     * 
     *  @param requestValue uint: value in HKG to request. 
     *  @param url string: url with details on the proposition 
     */
    function submitHKGProposal(uint requestValue, string url) onlyAfterEnd
                                                              onlyExecutive returns (bytes32 resultId, bool resultSucces){
        

        // If there is no 2 months over since the last event.
        // There is no posible to get any HKG. After 2 months
        // all the HKG is available. 
        if (now < (eventInfo.getEventEnd() + 8 weeks)) {
            throw;
        }

        // Possible to submit a proposal once 2 weeks 
        if (now < (timeOfLastProposal + 2 weeks)) throw;

        uint percent = preferedQtySold / 100;
        
        // validate the amount is legit
        // first 5 proposals should be less than 20% 
        if (counterProposals <= 5 && 
            requestValue     >  PROPOSAL_FUNDS_TH * percent) throw;
                
        // if remained value is less than requested 
        // gain all.
        if (requestValue > getHKGOwned()) 
            requestValue = getHKGOwned();
        
        
        // set id of the proposal
        // submit proposal to the map
        bytes32 id = sha3(msg.data, now);
        uint timeEnds = now + PROPOSAL_LIFETIME; 
        
        Proposal memory newProposal = Proposal(id, requestValue, url, timeEnds, 0, msg.sender, false, ProposalCurrency.HKG);
        proposals[id] = newProposal;
        listProposals.push(newProposal);
        
        ++counterProposals;
        timeOfLastProposal = now;                
                
        ProposalRequestSubmitted(id, requestValue, timeEnds, url, msg.sender);
        
        return (id, true);        
    }  
    
    
    
    /**
     * objectProposal - object previously submitted proposal, 
     *                  the objection right is obtained by 
     *                  purchasing prefered tokens on time of 
     *                  the hackathon.
     * 
     *  @param id bytes32 : the id of the proposla to redeem
     */
     function objectProposal(bytes32 id){
         
        Proposal memory proposal = proposals[id];
         
        // check proposal exist 
        if (proposals[id].id == 0) throw;

        // check already redeemed
        if (proposals[id].redeemed) throw;
         
        // ensure objection time
        if (now >= proposals[id].votindEndTS) throw;
         
        // ensure not voted  
        if (proposals[id].voted[msg.sender]) throw;
         
         // submit votes
         uint votes = votingRights[msg.sender];
         proposals[id].votesObjecting += votes;
         
         // mark voted 
         proposals[id].voted[msg.sender] = true; 
         
         uint idx = getIndexByProposalId(id);
         listProposals[idx] = proposals[id];   

         ObjectedVote(id, msg.sender, votes);         
     }
     
     
     function getIndexByProposalId(bytes32 id) returns (uint result){
         
         for (uint i = 0; i < listProposals.length; ++i){
             if (id == listProposals[i].id) return i;
         }
     }
    
    
   
    /**
     * redeemProposalFunds - redeem funds requested by prior 
     *                       submitted proposal     
     * 
     * @param id bytes32: the id of the proposal to redeem
     */
    function redeemProposalFunds(bytes32 id) onlyExecutive {

        if (proposals[id].id == 0) throw;
        if (proposals[id].submitter != msg.sender) throw;

        // ensure objection time
        if (now < proposals[id].votindEndTS) throw;
                           
    
            // check already redeemed
        if (proposals[id].redeemed) throw;

        // check votes objection => 55% of total votes
        uint objectionThreshold = preferedQtySold / 100 * 55;
        if (proposals[id].votesObjecting  > objectionThreshold) throw;
    
    
        if (proposals[id].proposalCurrency == ProposalCurrency.HKG){
            
            // send hacker gold 
            hackerGold.transfer(proposals[id].submitter, proposals[id].value);      
                        
        } else {
                        
           // send ether              
           bool success = proposals[id].submitter.send(proposals[id].value); 

           // rise event
           EtherRedeemAccepted(proposals[id].submitter, proposals[id].value);                              
        }
        
        // execute the proposal 
        proposals[id].redeemed = true; 
    }
    
    
    /**
     *  getAllTheFunds - to ensure there is no deadlock can 
     *                   can happen, and no case that voting 
     *                   structure will freeze the funds forever
     *                   the startup will be able to get all the
     *                   funds without a proposal required after
     *                   6 months.
     * 
     * 
     */             
    function getAllTheFunds() onlyExecutive {
        
        // If there is a deadlock in voting participates
        // the funds can be redeemed completelly in 6 months
        if (now < (eventInfo.getEventEnd() + 24 weeks)) {
            throw;
        }  
        
        // all the Ether
        bool success = msg.sender.send(this.balance);        
        
        // all the HKG
        hackerGold.transfer(msg.sender, getHKGOwned());              
    }
    
    
    /**
     * submitImpeachmentProposal - submit request to switch 
     *                             executive.
     * 
     *  @param urlDetails  - details of the impeachment proposal 
     *  @param newExecutive - address of the new executive 
     * 
     */             
     function submitImpeachmentProposal(string urlDetails, address newExecutive){
         
        // to offer impeachment you should have 
        // voting rights
        if (votingRights[msg.sender] == 0) throw;
         
        // the submission of the first impeachment 
        // proposal is possible only after 3 months
        // since the hackathon is over
        if (now < (eventInfo.getEventEnd() + 12 weeks)) throw;
        
                
        // check there is 1 months over since last one
        if (lastImpeachmentProposal.votindEndTS != 0 && 
            lastImpeachmentProposal.votindEndTS +  2 weeks > now) throw;


        // submit impeachment proposal
        // add the votes of the submitter 
        // to the proposal right away
        lastImpeachmentProposal = ImpeachmentProposal(urlDetails, newExecutive, now + 2 weeks, votingRights[msg.sender]);
        lastImpeachmentProposal.voted[msg.sender] = true;
         
        // rise event
        ImpeachmentProposed(msg.sender, urlDetails, now + 2 weeks, newExecutive);
     }
    
    
    /**
     * supportImpeachment - vote for impeachment proposal 
     *                      that is currently in progress
     *
     */
    function supportImpeachment(){

        // ensure that support is for exist proposal 
        if (lastImpeachmentProposal.newExecutive == 0x0) throw;
    
        // to offer impeachment you should have 
        // voting rights
        if (votingRights[msg.sender] == 0) throw;
        
        // check if not voted already 
        if (lastImpeachmentProposal.voted[msg.sender]) throw;
        
        // check if not finished the 2 weeks of voting 
        if (lastImpeachmentProposal.votindEndTS + 2 weeks <= now) throw;
                
        // support the impeachment
        lastImpeachmentProposal.voted[msg.sender] = true;
        lastImpeachmentProposal.votesSupporting += votingRights[msg.sender];

        // rise impeachment suppporting event
        ImpeachmentSupport(msg.sender, votingRights[msg.sender]);
        
        // if the vote is over 70% execute the switch 
        uint percent = preferedQtySold / 100; 
        
        if (lastImpeachmentProposal.votesSupporting >= 70 * percent){
            executive = lastImpeachmentProposal.newExecutive;
            
            // impeachment event
            ImpeachmentAccepted(executive);
        }
        
    } 
    
      
    
    // **************************** //
    // *     Constant Getters     * //
    // **************************** //
    
    function votingRightsOf(address _owner) constant returns (uint256 result) {
        result = votingRights[_owner];
    }
    
    function getPreferedQtySold() constant returns (uint result){
        return preferedQtySold;
    }
    
    function setVirtualExchange(address virtualExchangeAddr){
        if (virtualExchangeAddress != 0x0) throw;
        virtualExchangeAddress = virtualExchangeAddr;
    }

    function getHKGOwned() constant returns (uint result){
        return hackerGold.balanceOf(this);
    }
    
    function getEtherValue() constant returns (uint result){
        return this.balance;
    }
    
    function getExecutive() constant returns (address result){
        return executive;
    }
    
    function getHKGPrice() constant returns (uint result){
        return hkgPrice;
    }

    function getEtherPrice() constant returns (uint result){
        return etherPrice;
    }
    
    function getDSTName() constant returns(string result){
        return name;
    }    
    
    function getDSTNameBytes() constant returns(bytes32 result){
        return convert(name);
    }    

    function getDSTSymbol() constant returns(string result){
        return symbol;
    }    
    
    function getDSTSymbolBytes() constant returns(bytes32 result){
        return convert(symbol);
    }    

    function getAddress() constant returns (address result) {
        return this;
    }
    
    function getTotalSupply() constant returns (uint result) {
        return totalSupply;
    } 
        
    function getCollectedEther() constant returns (uint results) {        
        return collectedEther;
    }
    
    function getCounterProposals() constant returns (uint result){
        return counterProposals;
    }
        
    function getProposalIdByIndex(uint i) constant returns (bytes32 result){
        return listProposals[i].id;
    }    

    function getProposalObjectionByIndex(uint i) constant returns (uint result){
        return listProposals[i].votesObjecting;
    }

    function getProposalValueByIndex(uint i) constant returns (uint result){
        return listProposals[i].value;
    }                  
    
    function getCurrentImpeachmentUrlDetails() constant returns (string result){
        return lastImpeachmentProposal.urlDetails;
    }
    
    
    function getCurrentImpeachmentVotesSupporting() constant returns (uint result){
        return lastImpeachmentProposal.votesSupporting;
    }
    
    function convert(string key) returns (bytes32 ret) {
            if (bytes(key).length > 32) {
                throw;
            }      

            assembly {
                ret := mload(add(key, 32))
            }
    }    
    
    
    
    // ********************* //
    // *     Modifiers     * //
    // ********************* //    
 
    modifier onlyBeforeEnd() { if (now  >=  eventInfo.getEventEnd()) throw; _; }
    modifier onlyAfterEnd()  { if (now  <   eventInfo.getEventEnd()) throw; _; }
    
    modifier onlyAfterTradingStart()  { if (now  < eventInfo.getTradingStart()) throw; _; }
    
    modifier onlyExecutive()     { if (msg.sender != executive) throw; _; }
                                       
    modifier onlyIfAbleToIssueTokens()  { if (!ableToIssueTokens) throw; _; } 
    

    // ****************** //
    // *     Events     * //
    // ****************** //        

    
    event PriceHKGChange(uint indexed qtyForOneHKG, uint indexed tokensSold, uint indexed totalSupply);
    event BuyForHKGTransaction(address indexed buyer, uint indexed tokensSold, uint indexed totalSupply, uint qtyForOneHKG, uint tokensAmount);
    event BuyForEtherTransaction(address indexed buyer, uint indexed tokensSold, uint indexed totalSupply, uint qtyForOneEther, uint tokensAmount);

    event DstTokensIssued(uint indexed qtyForOneHKG, uint indexed tokensSold, uint indexed totalSupply, uint qtyToEmit);
    
    event ProposalRequestSubmitted(bytes32 id, uint value, uint timeEnds, string url, address sender);
    
    event EtherRedeemAccepted(address sender, uint value);
    
    event ObjectedVote(bytes32 id, address voter, uint votes);
    
    event ImpeachmentProposed(address submitter, string urlDetails, uint votindEndTS, address newExecutive);
    event ImpeachmentSupport(address supportter, uint votes);
    
    event ImpeachmentAccepted(address newExecutive);

    event NewEtherPrice(uint newQtyForOneEther);
    event DisableTokenIssuance();
    
    event BurnedAllRemainedTokens();
    
}


 
contract EventInfo{
    
    
    uint constant HACKATHON_5_WEEKS = 60 * 60 * 24 * 7 * 5;
    uint constant T_1_WEEK = 60 * 60 * 24 * 7;

    uint eventStart = 1479391200; // Thu, 17 Nov 2016 14:00:00 GMT
    uint eventEnd = eventStart + HACKATHON_5_WEEKS;
    
    
    /**
     * getEventStart - return the start of the event time
     */ 
    function getEventStart() constant returns (uint result){        
       return eventStart;
    } 
    
    /**
     * getEventEnd - return the end of the event time
     */ 
    function getEventEnd() constant returns (uint result){        
       return eventEnd;
    } 
    
    
    /**
     * getVotingStart - the voting starts 1 week after the 
     *                  event starts
     */ 
    function getVotingStart() constant returns (uint result){
        return eventStart+ T_1_WEEK;
    }

    /**
     * getTradingStart - the DST tokens trading starts 1 week 
     *                   after the event starts
     */ 
    function getTradingStart() constant returns (uint result){
        return eventStart+ T_1_WEEK;
    }

    /**
     * getNow - helper class to check what time the contract see
     */
    function getNow() constant returns (uint result){        
       return now;
    } 
    
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"supportImpeachment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getDSTName","outputs":[{"name":"result","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getDSTSymbolBytes","outputs":[{"name":"result","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getEtherValue","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"qtyForOneEther","type":"uint256"}],"name":"setEtherPrice","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getHKGPrice","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"getProposalObjectionByIndex","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"getProposalValueByIndex","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getAddress","outputs":[{"name":"result","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCollectedEther","outputs":[{"name":"results","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCurrentImpeachmentVotesSupporting","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getDSTNameBytes","outputs":[{"name":"result","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes32"}],"name":"redeemProposalFunds","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"disableTokenIssuance","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"hkgValue","type":"uint256"}],"name":"buyForHackerGold","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getDSTSymbol","outputs":[{"name":"result","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"qtyForOneEther","type":"uint256"},{"name":"qtyToEmit","type":"uint256"}],"name":"issueTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"requestValue","type":"uint256"},{"name":"url","type":"string"}],"name":"submitHKGProposal","outputs":[{"name":"resultId","type":"bytes32"},{"name":"resultSucces","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"getAllTheFunds","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCounterProposals","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"requestValue","type":"uint256"},{"name":"url","type":"string"}],"name":"submitEtherProposal","outputs":[{"name":"resultId","type":"bytes32"},{"name":"resultSucces","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getExecutive","outputs":[{"name":"result","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"virtualExchangeAddr","type":"address"}],"name":"setVirtualExchange","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"qtyForOneHKG","type":"uint256"},{"name":"qtyToEmit","type":"uint256"}],"name":"issuePreferedTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes32"}],"name":"objectProposal","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes32"}],"name":"getIndexByProposalId","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"burnRemainToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCurrentImpeachmentUrlDetails","outputs":[{"name":"result","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getPreferedQtySold","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"key","type":"string"}],"name":"convert","outputs":[{"name":"ret","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"getProposalIdByIndex","outputs":[{"name":"result","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"urlDetails","type":"string"},{"name":"newExecutive","type":"address"}],"name":"submitImpeachmentProposal","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"qtyForOneHKG","type":"uint256"}],"name":"setHKGPrice","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getHKGOwned","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getTotalSupply","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getEtherPrice","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"votingRightsOf","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"eventInfoAddr","type":"address"},{"name":"hackerGoldAddr","type":"address"},{"name":"dstName","type":"string"},{"name":"dstSymbol","type":"string"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"qtyForOneHKG","type":"uint256"},{"indexed":true,"name":"tokensSold","type":"uint256"},{"indexed":true,"name":"totalSupply","type":"uint256"}],"name":"PriceHKGChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":true,"name":"tokensSold","type":"uint256"},{"indexed":true,"name":"totalSupply","type":"uint256"},{"indexed":false,"name":"qtyForOneHKG","type":"uint256"},{"indexed":false,"name":"tokensAmount","type":"uint256"}],"name":"BuyForHKGTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":true,"name":"tokensSold","type":"uint256"},{"indexed":true,"name":"totalSupply","type":"uint256"},{"indexed":false,"name":"qtyForOneEther","type":"uint256"},{"indexed":false,"name":"tokensAmount","type":"uint256"}],"name":"BuyForEtherTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"qtyForOneHKG","type":"uint256"},{"indexed":true,"name":"tokensSold","type":"uint256"},{"indexed":true,"name":"totalSupply","type":"uint256"},{"indexed":false,"name":"qtyToEmit","type":"uint256"}],"name":"DstTokensIssued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"timeEnds","type":"uint256"},{"indexed":false,"name":"url","type":"string"},{"indexed":false,"name":"sender","type":"address"}],"name":"ProposalRequestSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"EtherRedeemAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"bytes32"},{"indexed":false,"name":"voter","type":"address"},{"indexed":false,"name":"votes","type":"uint256"}],"name":"ObjectedVote","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"submitter","type":"address"},{"indexed":false,"name":"urlDetails","type":"string"},{"indexed":false,"name":"votindEndTS","type":"uint256"},{"indexed":false,"name":"newExecutive","type":"address"}],"name":"ImpeachmentProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"supportter","type":"address"},{"indexed":false,"name":"votes","type":"uint256"}],"name":"ImpeachmentSupport","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newExecutive","type":"address"}],"name":"ImpeachmentAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newQtyForOneEther","type":"uint256"}],"name":"NewEtherPrice","type":"event"},{"anonymous":false,"inputs":[],"name":"DisableTokenIssuance","type":"event"},{"anonymous":false,"inputs":[],"name":"BurnedAllRemainedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

6103e86003908155620d2f00600455601460055560a060405260608190527f2e2e2e00000000000000000000000000000000000000000000000000000000006080908152600d805460008290527f2e2e2e00000000000000000000000000000000000000000000000000000000068255909260008051602062003767833981519152602060026001851615610100026000190190941693909304601f0192909204820192909190620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b5b50620001009291505b80821115620000fc5760008155600101620000e6565b5090565b5050600e8054600360ff199182168117909255604080518082019091528281527f2e2e2e00000000000000000000000000000000000000000000000000000000006020918201908152600f80546000829052825160069516949094178155937f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80260026101006001871615026000190190951694909404601f019290920483019290620001d7565b82800160010185558215620001d7579182015b82811115620001d7578251825591602001919060010190620001ba565b5b50620001fb9291505b80821115620000fc5760008155600101620000e6565b5090565b50506010805460ff19166001179055346200000057604051620037873803806200378783398101604090815281516020830151918301516060840151919390810191015b5b5b60068054600160a060020a0319166c01000000000000000000000000338102041790558151600d80546000829052909160008051602062003767833981519152602060026101006001861615026000190190941693909304601f908101849004820193870190839010620002c157805160ff1916838001178555620002f1565b82800160010185558215620002f1579182015b82811115620002f1578251825591602001919060010190620002d4565b5b50620003159291505b80821115620000fc5760008155600101620000e6565b5090565b505080600f9080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200036557805160ff191683800117855562000395565b8280016001018555821562000395579182015b828111156200039557825182559160200191906001019062000378565b5b50620003b99291505b80821115620000fc5760008155600101620000e6565b5090565b5050600980546c01000000000000000000000000808602819004600160a060020a0319928316179092556007805487840293909304929091169190911790555b505050505b613359806200040e6000396000f300606060405236156102035760e060020a600035046306fdde0381146103ba578063095ea7b3146104355780630b0b6d5b1461045c5780631b1ccc471461046b57806320e87093146104e657806323b872dd1461050557806325b29d841461052f578063271879911461054e578063277ccde2146105605780632e1fbfcd1461057f578063308b2fdc146105a1578063313ce567146105c357806338cc4831146105e657806340eddc4e1461060f57806341f4793a1461062e578063467ed2611461064d578063471ad9631461066c5780634e860ebb1461067e5780634efbe9331461068d57806354786b4e146106b157806354e35ba21461072c57806358793ad4146107415780635abedab2146107ae5780635af2f821146107bd57806360483a3f146107dc57806360d12fa014610849578063698f2e84146108725780636a749986146108845780636d5f6639146108995780636e9c3683146108ab57806370a08231146108cd5780637a290fe5146108ef5780637e754146146108fe57806394c41bdb1461097957806395d89b4114610998578063962a64cd14610a13578063a0b6533214610a78578063a9059cbb14610a9a578063ab62438f14610ac1578063b63ca98114610b18578063b7c54c6f14610b2a578063c4e41b2214610b49578063ca7c4dba14610b68578063cb79e31b14610b87578063dd62ed3e14610ba9575b6103b85b60006000600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421015905061027b57610000565b600c54151561028957610000565b600354600c54670de0b6b3a764000091349091020204915060009050816001600030600160a060020a0316815260200190815260200160002054101561033357600160a060020a033016600090815260016020526040902054600c54909250828115610000570466038d7ea4c68000023403905033600160a060020a03166108fc829081150290604051809050600060405180830381858888f19350505050151561033357610000565b5b600160a060020a03338116600081815260016020908152604080832080548801905530909416825283822080548790039055601380543487900301908190559154600c548551908152918201879052845190949293927f5a0391f2a67f11ed0034b68f8cf14e7e41d6f86e0a7622f2af5ea8f07b488396928290030190a45b5b5050565b005b34610000576103c7610bce565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610448600435602435610c5c565b604080519115158252519081900360200190f35b34610000576103b8610cc7565b005b34610000576103c7610e2b565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104f3610ec9565b60408051918252519081900360200190f35b3461000057610448600435602435604435610f68565b604080519115158252519081900360200190f35b34610000576104f361105f565b60408051918252519081900360200190f35b34610000576103b860043561106e565b005b34610000576104f3611137565b60408051918252519081900360200190f35b34610000576104f360043561113e565b60408051918252519081900360200190f35b34610000576104f360043561116a565b60408051918252519081900360200190f35b34610000576105d0611196565b6040805160ff9092168252519081900360200190f35b34610000576105f361119f565b60408051600160a060020a039092168252519081900360200190f35b34610000576104f36111a4565b60408051918252519081900360200190f35b34610000576104f36111ab565b60408051918252519081900360200190f35b34610000576104f36111b2565b60408051918252519081900360200190f35b34610000576103b8600435611251565b005b34610000576103b86114b0565b005b3461000057610448600435611502565b604080519115158252519081900360200190f35b34610000576103c7611644565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576103b86004356024356116e2565b005b346100005760408051602060046024803582810135601f810185900485028601850190965285855261079595833595939460449493929092019181908401838280828437509496506117ea95505050505050565b6040805192835290151560208301528051918290030190f35b34610000576103b8611e87565b005b34610000576104f3611fba565b60408051918252519081900360200190f35b346100005760408051602060046024803582810135601f81018590048502860185019096528585526107959583359593946044949392909201918190840183828082843750949650611fc195505050505050565b6040805192835290151560208301528051918290030190f35b34610000576105f36125f6565b60408051600160a060020a039092168252519081900360200190f35b34610000576103b8600435612606565b005b34610000576103b860043560243561263a565b005b34610000576103b8600435612822565b005b34610000576104f3600435612c34565b60408051918252519081900360200190f35b34610000576104f3600435612c80565b60408051918252519081900360200190f35b34610000576103b8612c9f565b005b34610000576103c7612d06565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104f3612da4565b60408051918252519081900360200190f35b34610000576103c7612dab565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104f3600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650612e3995505050505050565b60408051918252519081900360200190f35b34610000576104f3600435612e56565b60408051918252519081900360200190f35b3461000057610448600435602435612e7f565b604080519115158252519081900360200190f35b34610000576103b8600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496505093359350612f2f92505050565b005b34610000576103b860043561322b565b005b34610000576104f3613283565b60408051918252519081900360200190f35b34610000576104f36132ff565b60408051918252519081900360200190f35b34610000576104f3613306565b60408051918252519081900360200190f35b34610000576104f360043561330d565b60408051918252519081900360200190f35b34610000576104f360043560243561332c565b60408051918252519081900360200190f35b600d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c545780601f10610c2957610100808354040283529160200191610c54565b820191906000526020600020905b815481529060010190602001808311610c3757829003601f168201915b505050505081565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b601a54600090600160a060020a03161515610ce157610000565b600160a060020a0333166000908152600a60205260409020541515610d0557610000565b600160a060020a0333166000908152601d602052604090205460ff1615610d2b57610000565b601b54426212750090910111610d4057610000565b600160a060020a0333166000818152601d60209081526040808320805460ff19166001179055600a8252918290208054601c805490910190555482519384529083015280517f475c7605c08471fdc551a58d2c318b163628c5852f69323a1b91c34eb0bb09339281900390910190a150601154601c54606490910490604682029010610e2757601a5460068054600160a060020a031916606060020a600160a060020a0393841681020417908190556040805191909216815290517f6b8184e23a898262087be50aa3ea5de648451e63f94413e810586c25282d58c2916020908290030190a15b5b50565b604080516020808201835260008252600d8054845160026001831615610100026000190190921691909104601f810184900484028201840190955284815292939091830182828015610ebe5780601f10610e9357610100808354040283529160200191610ebe565b820191906000526020600020905b815481529060010190602001808311610ea157829003601f168201915b505050505090505b90565b600f805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152600093610f629391929091830182828015610f585780601f10610f2d57610100808354040283529160200191610f58565b820191906000526020600020905b815481529060010190602001808311610f3b57829003601f168201915b5050505050612e39565b90505b90565b600160a060020a038316600090815260016020526040812054829010801590610fb85750600160a060020a0380851660009081526002602090815260408083203390941683529290522054829010155b8015610fc45750600082115b1561105357600160a060020a03808516600081815260016020908152604080832080548890039055878516808452818420889055848452600283528184203390961684529482529182902080548790039055815186815291517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600161105756611057565b5060005b5b9392505050565b600160a060020a033016315b90565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040515142101590506110de57610000565b60065433600160a060020a039081169116146110f957610000565b600c8190556040805182815290517f0bbd501ef336990995d82b5e3fd82a15abe1ff10c982757a1698ac5d1c3e79579181900360200190a15b5b5b50565b600b545b90565b6000601882815481101561000057906000526020600020906007020160005b506004015490505b919050565b6000601882815481101561000057906000526020600020906007020160005b506001015490505b919050565b600e5460ff1681565b305b90565b6013545b90565b601c545b90565b600d805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152600093610f629391929091830182828015610f585780601f10610f2d57610100808354040283529160200191610f58565b820191906000526020600020905b815481529060010190602001808311610f3b57829003601f168201915b5050505050612e39565b90505b90565b600654600090819033600160a060020a0390811691161461127157610000565b600083815260146020526040902054151561128b57610000565b60008381526014602052604090206005015433600160a060020a039081169116146112b557610000565b6000838152601460205260409020600301544210156112d357610000565b60008381526014602052604090206005015460a060020a900460ff16156112f957610000565b601154600084815260146020526040902060040154606490910460370292508290111561132557610000565b60008381526014602052604081206005015460a860020a900460ff16600181116100005714156113e657600954600084815260146020908152604080832060058101546001909101548251840185905282517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810191909152915194169363a9059cbb93604480840194938390030190829087803b156100005760325a03f1156100005750611484915050565b60008381526014602052604080822060058101546001909101549151600160a060020a039091169282156108fc02929190818181858888f160008881526014602090815260409182902060058101546001909101548351600160a060020a0390921682529181019190915281519297507f2648a7e2f9c34700b91370233666e5118fa8be3e0c21fed4f7402b941df8efdd9650829003019350915050a15b6000838152601460205260409020600501805460a060020a60ff02191660a060020a1790555b5b505050565b60065433600160a060020a039081169116146114cb57610000565b6010805460ff191690556040517fb48c7f694f0a3b9b22d7e61c60ff8aebbb107314b6b698fc489ff3f017cb57e090600090a15b5b565b600060006000600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f115610000575050604051514210905061157757610000565b60085433600160a060020a0390811691161461159257610000565b5050600b54600160a060020a03328181166000908152600a6020526040902080549386029384019055601180548401905560128054860190556008549092916115de9130911683610f68565b506115e98282612e7f565b50600054601154600b5460408051918252602082018590528051600160a060020a038716927fb4d6befef2def3d17bcb13c2b882ec4fa047f33157446d3e0e6094b2a21609ac92908290030190a4600192505b5b5050919050565b604080516020808201835260008252600f8054845160026001831615610100026000190190921691909104601f810184900484028201840190955284815292939091830182828015610ebe5780601f10610e9357610100808354040283529160200191610ebe565b820191906000526020600020905b815481529060010190602001808311610ea157829003601f168201915b505050505090505b90565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421015905061175257610000565b60065433600160a060020a0390811691161461176d57610000565b60105460ff16151561177e57610000565b600160a060020a0330166000908152600160209081526040808320805485019055600c859055825484019283905580518481529051839286927f10cb430288a1696de11938bc5362c6f8c60e58808237bce4436b93a8573e00c3929081900390910190a45b5b5b5b5050565b6000600060006000600061010060405190810160405280600081526020016000815260200160206040519081016040528060008152602001508152602001600081526020016000815260200160008152602001600081526020016000815260200150600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040515142101590506118bc57610000565b60065433600160a060020a039081169116146118d757610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f115610000575050604051516249d40001421015905061194c57610000565b601754621275000142101561196057610000565b60115460649004935060056016541115801561197f5750836005540288115b1561198957610000565b611991613283565b8811156119a3576119a0613283565b97505b60003642604051808484808284378201915050828152602001935050505060405180910390209250600454420191506101006040519081016040528084815260200189815260200188815260200183815260200160008152602001338152602001600081526020016000815260200150905080601460008560001916815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611a9357805160ff1916838001178555611ac0565b82800160010185558215611ac0579182015b82811115611ac0578251825591602001919060010190611aa5565b5b50611ae19291505b80821115611add5760008155600101611ac9565b5090565b5050606082015160038201556080820151600482015560a08201516005909101805460c084015160e09094015160f860020a90810281900460a860020a0260a860020a60ff02199582029190910460a060020a0260a060020a60ff0219606060020a95860295909504600160a060020a03199093169290921793909316179290921617905560188054600181018083558281838015829011611c3c57600702816007028360005260206000209182019101611c3c91905b80821115611add5760006000820160009055600182016000905560028201805460018160011615610100020316600290046000825580601f10611bdb5750611c0d565b601f016020900490600052602060002090810190611c0d91905b80821115611add5760008155600101611ac9565b5090565b5b50506000600382018190556004820155600581018054600160b060020a0319169055600701611b98565b5090565b5b505050916000526020600020906007020160005b83909190915060008201518160000155602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cbd57805160ff1916838001178555611cea565b82800160010185558215611cea579182015b82811115611cea578251825591602001919060010190611ccf565b5b50611d0b9291505b80821115611add5760008155600101611ac9565b5090565b5050606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083606060020a90810204021790555060c08201518160050160146101000a81548160ff021916908360f860020a90810204021790555060e08201518160050160156101000a81548160ff021916908360f860020a90810204021790555050505060166000815460010191905081905550426017819055507f1a1eea7d2a0f099c2f19efb4e101fcf220558c9f4fbc6961b33fbe02d3a7be908389848a3360405180866000191681526020018581526020018481526020018060200183600160a060020a031681526020018281038252848181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f168015611e615780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1826001955095505b5b5b505050509250929050565b60065460009033600160a060020a03908116911614611ea557610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040515162dd7c00014210159050611f1a57610000565b604051600160a060020a0333811691309091163180156108fc02916000818181858888f1600954909550600160a060020a0316935063a9059cbb9250339150611f639050613283565b6000604051602001526040518360e060020a0281526004018083600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050505b5b50565b6016545b90565b6000600060006000600061010060405190810160405280600081526020016000815260200160206040519081016040528060008152602001508152602001600081526020016000815260200160008152602001600081526020016000815260200150600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421015905061209357610000565b60065433600160a060020a039081169116146120ae57610000565b60105460ff16156120be57610000565b60006120c930612c80565b11156120d457610000565b60175462127500014210156120e857610000565b601354606490049350836005540288111561210257610000565b30600160a060020a0316318811156121225730600160a060020a03163197505b60003642604051808484808284378201915050828152602001935050505060405180910390209250600454420191506101006040519081016040528084815260200189815260200188815260200183815260200160008152602001338152602001600081526020016001815260200150905080601460008560001916815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061221257805160ff191683800117855561223f565b8280016001018555821561223f579182015b8281111561223f578251825591602001919060010190612224565b5b506122609291505b80821115611add5760008155600101611ac9565b5090565b5050606082015160038201556080820151600482015560a08201516005909101805460c084015160e09094015160f860020a90810281900460a860020a0260a860020a60ff02199582029190910460a060020a0260a060020a60ff0219606060020a95860295909504600160a060020a031990931692909217939093161792909216179055601880546001810180835582818380158290116123bb576007028160070283600052602060002091820191016123bb91905b80821115611add5760006000820160009055600182016000905560028201805460018160011615610100020316600290046000825580601f1061235a575061238c565b601f01602090049060005260206000209081019061238c91905b80821115611add5760008155600101611ac9565b5090565b5b50506000600382018190556004820155600581018054600160b060020a0319169055600701612317565b5090565b5b505050916000526020600020906007020160005b83909190915060008201518160000155602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061243c57805160ff1916838001178555612469565b82800160010185558215612469579182015b8281111561246957825182559160200191906001019061244e565b5b5061248a9291505b80821115611add5760008155600101611ac9565b5090565b5050606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083606060020a90810204021790555060c08201518160050160146101000a81548160ff021916908360f860020a90810204021790555060e08201518160050160156101000a81548160ff021916908360f860020a908102040217905550505050426017819055507f1a1eea7d2a0f099c2f19efb4e101fcf220558c9f4fbc6961b33fbe02d3a7be908389848a3360405180866000191681526020018581526020018481526020018060200183600160a060020a031681526020018281038252848181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f168015611e615780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1826001955095505b5b5b505050509250929050565b600654600160a060020a03165b90565b600854600160a060020a03161561261c57610000565b60088054600160a060020a031916606060020a838102041790555b50565b60065433600160a060020a0390811691161461265557610000565b60105460ff16151561266657610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421090506126d557610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663cdd933326000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421015905061274557610000565b600854600160a060020a0316151561275c57610000565b6000805482018155600160a060020a03308116808352600160209081526040808520805487019055600b8790556002825280852060088054861687529083529481902080548701905593548451868152945193169391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3600054601154600b546040805185815290517f10cb430288a1696de11938bc5362c6f8c60e58808237bce4436b93a8573e00c39181900360200190a45b5b5b5b5b5050565b604080516101008082018352600080835260208084018290528451808201865282815284860152606084018290526080840182905260a0840182905260c0840182905260e0840182905285825260148152848220855180850187528154815260018083015482850152600280840180548a51600019948216159099029390930190921604601f8101859004850287018501895280875296979496879692959394938601938301828280156129175780601f106128ec57610100808354040283529160200191612917565b820191906000526020600020905b8154815290600101906020018083116128fa57829003601f168201915b505050918352505060038201546020820152600482015460408201526005820154600160a060020a038116606083015260ff60a060020a820481161515608084015260a09092019160a860020a909104166001811161000057905250600085815260146020526040902054909350151561299057610000565b60008481526014602052604090206005015460a060020a900460ff16156129b657610000565b60008481526014602052604090206003015442106129d357610000565b6000848152601460209081526040808320600160a060020a033316845260060190915290205460ff1615612a0657610000565b600160a060020a0333166000818152600a6020908152604080832054888452601483528184206004810180548301905594845260069094019091529020805460ff191660011790559150612a5984612c34565b6000858152601460205260409020601880549293509091839081101561000057906000526020600020906007020160005b50600082015481600001556001820154816001015560028201816002019080546001816001161561010002031660029004828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612af45780548555612b30565b82800160010185558215612b3057600052602060002091601f016020900482015b82811115612b30578254825591600101919060010190612b15565b5b50612b519291505b80821115611add5760008155600101611ac9565b5090565b5050600382810154908201556004808301549082015560059182018054929091018054600160a060020a031916606060020a600160a060020a0394851681020417808255825460a060020a60ff021990911660f860020a60a060020a9283900460ff908116820282900490930291909117808455935460a860020a60ff021990941660a860020a9485900490921681020490920291909117905560408051868152339092166020830152818101849052517f8f8bbb8c1937f844f6a094cd4c6eeab8ed5e36f83952e6306ffb2c11fffe5bce916060908290030190a15b50505050565b6000805b601854811015612c7957601881815481101561000057906000526020600020906007020160005b5054831415612c7057809150612c79565b5b600101612c38565b5b50919050565b600160a060020a0381166000908152600160205260409020545b919050565b60065433600160a060020a03908116911614612cba57610000565b600160a060020a03301660009081526001602052604080822080548354038355829055517fe0987873419fe09d3c9a3e0267f4daf163e812d512f867abaf6bf9822f141a8b9190a15b5b565b60408051602080820183526000825260198054845160026001831615610100026000190190921691909104601f810184900484028201840190955284815292939091830182828015610ebe5780601f10610e9357610100808354040283529160200191610ebe565b820191906000526020600020905b815481529060010190602001808311610ea157829003601f168201915b505050505090505b90565b6011545b90565b600f805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c545780601f10610c2957610100808354040283529160200191610c54565b820191906000526020600020905b815481529060010190602001808311610c3757829003601f168201915b505050505081565b6000602082511115612e4a57610000565b5060208101515b919050565b6000601882815481101561000057906000526020600020906007020160005b505490505b919050565b600160a060020a033316600090815260016020526040812054829010801590612ea85750600082115b15612f2057600160a060020a03338116600081815260016020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610cc156610cc1565b506000610cc1565b5b92915050565b600160a060020a0333166000908152600a60205260409020541515612f5357610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151626ebe00014210159050612fc857610000565b601b5415801590612fe25750426019600201546212750001115b15612fec57610000565b6040805160808101825283815260208082018490524262127500018284015233600160a060020a03166000908152600a8252928320546060830152815180516019805495819052939484937f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969560026001841615610100026000190190931692909204601f9081018290048301949091019083901061309557805160ff19168380011785556130c2565b828001600101855582156130c2579182015b828111156130c25782518255916020019190600101906130a7565b5b506130e39291505b80821115611add5760008155600101611ac9565b5090565b505060208201518160010160006101000a815481600160a060020a030219169083606060020a908102040217905550604082015181600201556060820151816003015590505060016019600401600033600160a060020a0316815260200190815260200160002060006101000a81548160ff021916908360f860020a9081020402179055507f854a9cc4d907d23cd8dcc72af48dc0e6a87e6f76376a309a0ffa3231ce8e13363383426212750001846040518085600160a060020a031681526020018060200184815260200183600160a060020a031681526020018281038252858181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156132165780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a15b5050565b60065433600160a060020a0390811691161461324657610000565b600b819055600080546011546040519192909184917f17a7f53ef43da32c3936b4ac2b060caff5c4b03cd24b1c8e96a191eb1ec48d1591a45b5b50565b6000600960009054906101000a9004600160a060020a0316600160a060020a03166370a08231306000604051602001526040518260e060020a0281526004018082600160a060020a03168152602001915050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b90565b6000545b90565b600c545b90565b600160a060020a0381166000908152600a60205260409020545b919050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b9291505056d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5

Deployed Bytecode

0x606060405236156102035760e060020a600035046306fdde0381146103ba578063095ea7b3146104355780630b0b6d5b1461045c5780631b1ccc471461046b57806320e87093146104e657806323b872dd1461050557806325b29d841461052f578063271879911461054e578063277ccde2146105605780632e1fbfcd1461057f578063308b2fdc146105a1578063313ce567146105c357806338cc4831146105e657806340eddc4e1461060f57806341f4793a1461062e578063467ed2611461064d578063471ad9631461066c5780634e860ebb1461067e5780634efbe9331461068d57806354786b4e146106b157806354e35ba21461072c57806358793ad4146107415780635abedab2146107ae5780635af2f821146107bd57806360483a3f146107dc57806360d12fa014610849578063698f2e84146108725780636a749986146108845780636d5f6639146108995780636e9c3683146108ab57806370a08231146108cd5780637a290fe5146108ef5780637e754146146108fe57806394c41bdb1461097957806395d89b4114610998578063962a64cd14610a13578063a0b6533214610a78578063a9059cbb14610a9a578063ab62438f14610ac1578063b63ca98114610b18578063b7c54c6f14610b2a578063c4e41b2214610b49578063ca7c4dba14610b68578063cb79e31b14610b87578063dd62ed3e14610ba9575b6103b85b60006000600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421015905061027b57610000565b600c54151561028957610000565b600354600c54670de0b6b3a764000091349091020204915060009050816001600030600160a060020a0316815260200190815260200160002054101561033357600160a060020a033016600090815260016020526040902054600c54909250828115610000570466038d7ea4c68000023403905033600160a060020a03166108fc829081150290604051809050600060405180830381858888f19350505050151561033357610000565b5b600160a060020a03338116600081815260016020908152604080832080548801905530909416825283822080548790039055601380543487900301908190559154600c548551908152918201879052845190949293927f5a0391f2a67f11ed0034b68f8cf14e7e41d6f86e0a7622f2af5ea8f07b488396928290030190a45b5b5050565b005b34610000576103c7610bce565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610448600435602435610c5c565b604080519115158252519081900360200190f35b34610000576103b8610cc7565b005b34610000576103c7610e2b565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104f3610ec9565b60408051918252519081900360200190f35b3461000057610448600435602435604435610f68565b604080519115158252519081900360200190f35b34610000576104f361105f565b60408051918252519081900360200190f35b34610000576103b860043561106e565b005b34610000576104f3611137565b60408051918252519081900360200190f35b34610000576104f360043561113e565b60408051918252519081900360200190f35b34610000576104f360043561116a565b60408051918252519081900360200190f35b34610000576105d0611196565b6040805160ff9092168252519081900360200190f35b34610000576105f361119f565b60408051600160a060020a039092168252519081900360200190f35b34610000576104f36111a4565b60408051918252519081900360200190f35b34610000576104f36111ab565b60408051918252519081900360200190f35b34610000576104f36111b2565b60408051918252519081900360200190f35b34610000576103b8600435611251565b005b34610000576103b86114b0565b005b3461000057610448600435611502565b604080519115158252519081900360200190f35b34610000576103c7611644565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576103b86004356024356116e2565b005b346100005760408051602060046024803582810135601f810185900485028601850190965285855261079595833595939460449493929092019181908401838280828437509496506117ea95505050505050565b6040805192835290151560208301528051918290030190f35b34610000576103b8611e87565b005b34610000576104f3611fba565b60408051918252519081900360200190f35b346100005760408051602060046024803582810135601f81018590048502860185019096528585526107959583359593946044949392909201918190840183828082843750949650611fc195505050505050565b6040805192835290151560208301528051918290030190f35b34610000576105f36125f6565b60408051600160a060020a039092168252519081900360200190f35b34610000576103b8600435612606565b005b34610000576103b860043560243561263a565b005b34610000576103b8600435612822565b005b34610000576104f3600435612c34565b60408051918252519081900360200190f35b34610000576104f3600435612c80565b60408051918252519081900360200190f35b34610000576103b8612c9f565b005b34610000576103c7612d06565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104f3612da4565b60408051918252519081900360200190f35b34610000576103c7612dab565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104f3600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650612e3995505050505050565b60408051918252519081900360200190f35b34610000576104f3600435612e56565b60408051918252519081900360200190f35b3461000057610448600435602435612e7f565b604080519115158252519081900360200190f35b34610000576103b8600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496505093359350612f2f92505050565b005b34610000576103b860043561322b565b005b34610000576104f3613283565b60408051918252519081900360200190f35b34610000576104f36132ff565b60408051918252519081900360200190f35b34610000576104f3613306565b60408051918252519081900360200190f35b34610000576104f360043561330d565b60408051918252519081900360200190f35b34610000576104f360043560243561332c565b60408051918252519081900360200190f35b600d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c545780601f10610c2957610100808354040283529160200191610c54565b820191906000526020600020905b815481529060010190602001808311610c3757829003601f168201915b505050505081565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b601a54600090600160a060020a03161515610ce157610000565b600160a060020a0333166000908152600a60205260409020541515610d0557610000565b600160a060020a0333166000908152601d602052604090205460ff1615610d2b57610000565b601b54426212750090910111610d4057610000565b600160a060020a0333166000818152601d60209081526040808320805460ff19166001179055600a8252918290208054601c805490910190555482519384529083015280517f475c7605c08471fdc551a58d2c318b163628c5852f69323a1b91c34eb0bb09339281900390910190a150601154601c54606490910490604682029010610e2757601a5460068054600160a060020a031916606060020a600160a060020a0393841681020417908190556040805191909216815290517f6b8184e23a898262087be50aa3ea5de648451e63f94413e810586c25282d58c2916020908290030190a15b5b50565b604080516020808201835260008252600d8054845160026001831615610100026000190190921691909104601f810184900484028201840190955284815292939091830182828015610ebe5780601f10610e9357610100808354040283529160200191610ebe565b820191906000526020600020905b815481529060010190602001808311610ea157829003601f168201915b505050505090505b90565b600f805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152600093610f629391929091830182828015610f585780601f10610f2d57610100808354040283529160200191610f58565b820191906000526020600020905b815481529060010190602001808311610f3b57829003601f168201915b5050505050612e39565b90505b90565b600160a060020a038316600090815260016020526040812054829010801590610fb85750600160a060020a0380851660009081526002602090815260408083203390941683529290522054829010155b8015610fc45750600082115b1561105357600160a060020a03808516600081815260016020908152604080832080548890039055878516808452818420889055848452600283528184203390961684529482529182902080548790039055815186815291517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600161105756611057565b5060005b5b9392505050565b600160a060020a033016315b90565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040515142101590506110de57610000565b60065433600160a060020a039081169116146110f957610000565b600c8190556040805182815290517f0bbd501ef336990995d82b5e3fd82a15abe1ff10c982757a1698ac5d1c3e79579181900360200190a15b5b5b50565b600b545b90565b6000601882815481101561000057906000526020600020906007020160005b506004015490505b919050565b6000601882815481101561000057906000526020600020906007020160005b506001015490505b919050565b600e5460ff1681565b305b90565b6013545b90565b601c545b90565b600d805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152600093610f629391929091830182828015610f585780601f10610f2d57610100808354040283529160200191610f58565b820191906000526020600020905b815481529060010190602001808311610f3b57829003601f168201915b5050505050612e39565b90505b90565b600654600090819033600160a060020a0390811691161461127157610000565b600083815260146020526040902054151561128b57610000565b60008381526014602052604090206005015433600160a060020a039081169116146112b557610000565b6000838152601460205260409020600301544210156112d357610000565b60008381526014602052604090206005015460a060020a900460ff16156112f957610000565b601154600084815260146020526040902060040154606490910460370292508290111561132557610000565b60008381526014602052604081206005015460a860020a900460ff16600181116100005714156113e657600954600084815260146020908152604080832060058101546001909101548251840185905282517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810191909152915194169363a9059cbb93604480840194938390030190829087803b156100005760325a03f1156100005750611484915050565b60008381526014602052604080822060058101546001909101549151600160a060020a039091169282156108fc02929190818181858888f160008881526014602090815260409182902060058101546001909101548351600160a060020a0390921682529181019190915281519297507f2648a7e2f9c34700b91370233666e5118fa8be3e0c21fed4f7402b941df8efdd9650829003019350915050a15b6000838152601460205260409020600501805460a060020a60ff02191660a060020a1790555b5b505050565b60065433600160a060020a039081169116146114cb57610000565b6010805460ff191690556040517fb48c7f694f0a3b9b22d7e61c60ff8aebbb107314b6b698fc489ff3f017cb57e090600090a15b5b565b600060006000600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f115610000575050604051514210905061157757610000565b60085433600160a060020a0390811691161461159257610000565b5050600b54600160a060020a03328181166000908152600a6020526040902080549386029384019055601180548401905560128054860190556008549092916115de9130911683610f68565b506115e98282612e7f565b50600054601154600b5460408051918252602082018590528051600160a060020a038716927fb4d6befef2def3d17bcb13c2b882ec4fa047f33157446d3e0e6094b2a21609ac92908290030190a4600192505b5b5050919050565b604080516020808201835260008252600f8054845160026001831615610100026000190190921691909104601f810184900484028201840190955284815292939091830182828015610ebe5780601f10610e9357610100808354040283529160200191610ebe565b820191906000526020600020905b815481529060010190602001808311610ea157829003601f168201915b505050505090505b90565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421015905061175257610000565b60065433600160a060020a0390811691161461176d57610000565b60105460ff16151561177e57610000565b600160a060020a0330166000908152600160209081526040808320805485019055600c859055825484019283905580518481529051839286927f10cb430288a1696de11938bc5362c6f8c60e58808237bce4436b93a8573e00c3929081900390910190a45b5b5b5b5050565b6000600060006000600061010060405190810160405280600081526020016000815260200160206040519081016040528060008152602001508152602001600081526020016000815260200160008152602001600081526020016000815260200150600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040515142101590506118bc57610000565b60065433600160a060020a039081169116146118d757610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f115610000575050604051516249d40001421015905061194c57610000565b601754621275000142101561196057610000565b60115460649004935060056016541115801561197f5750836005540288115b1561198957610000565b611991613283565b8811156119a3576119a0613283565b97505b60003642604051808484808284378201915050828152602001935050505060405180910390209250600454420191506101006040519081016040528084815260200189815260200188815260200183815260200160008152602001338152602001600081526020016000815260200150905080601460008560001916815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611a9357805160ff1916838001178555611ac0565b82800160010185558215611ac0579182015b82811115611ac0578251825591602001919060010190611aa5565b5b50611ae19291505b80821115611add5760008155600101611ac9565b5090565b5050606082015160038201556080820151600482015560a08201516005909101805460c084015160e09094015160f860020a90810281900460a860020a0260a860020a60ff02199582029190910460a060020a0260a060020a60ff0219606060020a95860295909504600160a060020a03199093169290921793909316179290921617905560188054600181018083558281838015829011611c3c57600702816007028360005260206000209182019101611c3c91905b80821115611add5760006000820160009055600182016000905560028201805460018160011615610100020316600290046000825580601f10611bdb5750611c0d565b601f016020900490600052602060002090810190611c0d91905b80821115611add5760008155600101611ac9565b5090565b5b50506000600382018190556004820155600581018054600160b060020a0319169055600701611b98565b5090565b5b505050916000526020600020906007020160005b83909190915060008201518160000155602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cbd57805160ff1916838001178555611cea565b82800160010185558215611cea579182015b82811115611cea578251825591602001919060010190611ccf565b5b50611d0b9291505b80821115611add5760008155600101611ac9565b5090565b5050606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083606060020a90810204021790555060c08201518160050160146101000a81548160ff021916908360f860020a90810204021790555060e08201518160050160156101000a81548160ff021916908360f860020a90810204021790555050505060166000815460010191905081905550426017819055507f1a1eea7d2a0f099c2f19efb4e101fcf220558c9f4fbc6961b33fbe02d3a7be908389848a3360405180866000191681526020018581526020018481526020018060200183600160a060020a031681526020018281038252848181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f168015611e615780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1826001955095505b5b5b505050509250929050565b60065460009033600160a060020a03908116911614611ea557610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750506040515162dd7c00014210159050611f1a57610000565b604051600160a060020a0333811691309091163180156108fc02916000818181858888f1600954909550600160a060020a0316935063a9059cbb9250339150611f639050613283565b6000604051602001526040518360e060020a0281526004018083600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050505b5b50565b6016545b90565b6000600060006000600061010060405190810160405280600081526020016000815260200160206040519081016040528060008152602001508152602001600081526020016000815260200160008152602001600081526020016000815260200150600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421015905061209357610000565b60065433600160a060020a039081169116146120ae57610000565b60105460ff16156120be57610000565b60006120c930612c80565b11156120d457610000565b60175462127500014210156120e857610000565b601354606490049350836005540288111561210257610000565b30600160a060020a0316318811156121225730600160a060020a03163197505b60003642604051808484808284378201915050828152602001935050505060405180910390209250600454420191506101006040519081016040528084815260200189815260200188815260200183815260200160008152602001338152602001600081526020016001815260200150905080601460008560001916815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061221257805160ff191683800117855561223f565b8280016001018555821561223f579182015b8281111561223f578251825591602001919060010190612224565b5b506122609291505b80821115611add5760008155600101611ac9565b5090565b5050606082015160038201556080820151600482015560a08201516005909101805460c084015160e09094015160f860020a90810281900460a860020a0260a860020a60ff02199582029190910460a060020a0260a060020a60ff0219606060020a95860295909504600160a060020a031990931692909217939093161792909216179055601880546001810180835582818380158290116123bb576007028160070283600052602060002091820191016123bb91905b80821115611add5760006000820160009055600182016000905560028201805460018160011615610100020316600290046000825580601f1061235a575061238c565b601f01602090049060005260206000209081019061238c91905b80821115611add5760008155600101611ac9565b5090565b5b50506000600382018190556004820155600581018054600160b060020a0319169055600701612317565b5090565b5b505050916000526020600020906007020160005b83909190915060008201518160000155602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061243c57805160ff1916838001178555612469565b82800160010185558215612469579182015b8281111561246957825182559160200191906001019061244e565b5b5061248a9291505b80821115611add5760008155600101611ac9565b5090565b5050606082015181600301556080820151816004015560a08201518160050160006101000a815481600160a060020a030219169083606060020a90810204021790555060c08201518160050160146101000a81548160ff021916908360f860020a90810204021790555060e08201518160050160156101000a81548160ff021916908360f860020a908102040217905550505050426017819055507f1a1eea7d2a0f099c2f19efb4e101fcf220558c9f4fbc6961b33fbe02d3a7be908389848a3360405180866000191681526020018581526020018481526020018060200183600160a060020a031681526020018281038252848181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f168015611e615780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1826001955095505b5b5b505050509250929050565b600654600160a060020a03165b90565b600854600160a060020a03161561261c57610000565b60088054600160a060020a031916606060020a838102041790555b50565b60065433600160a060020a0390811691161461265557610000565b60105460ff16151561266657610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421090506126d557610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663cdd933326000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421015905061274557610000565b600854600160a060020a0316151561275c57610000565b6000805482018155600160a060020a03308116808352600160209081526040808520805487019055600b8790556002825280852060088054861687529083529481902080548701905593548451868152945193169391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3600054601154600b546040805185815290517f10cb430288a1696de11938bc5362c6f8c60e58808237bce4436b93a8573e00c39181900360200190a45b5b5b5b5b5050565b604080516101008082018352600080835260208084018290528451808201865282815284860152606084018290526080840182905260a0840182905260c0840182905260e0840182905285825260148152848220855180850187528154815260018083015482850152600280840180548a51600019948216159099029390930190921604601f8101859004850287018501895280875296979496879692959394938601938301828280156129175780601f106128ec57610100808354040283529160200191612917565b820191906000526020600020905b8154815290600101906020018083116128fa57829003601f168201915b505050918352505060038201546020820152600482015460408201526005820154600160a060020a038116606083015260ff60a060020a820481161515608084015260a09092019160a860020a909104166001811161000057905250600085815260146020526040902054909350151561299057610000565b60008481526014602052604090206005015460a060020a900460ff16156129b657610000565b60008481526014602052604090206003015442106129d357610000565b6000848152601460209081526040808320600160a060020a033316845260060190915290205460ff1615612a0657610000565b600160a060020a0333166000818152600a6020908152604080832054888452601483528184206004810180548301905594845260069094019091529020805460ff191660011790559150612a5984612c34565b6000858152601460205260409020601880549293509091839081101561000057906000526020600020906007020160005b50600082015481600001556001820154816001015560028201816002019080546001816001161561010002031660029004828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612af45780548555612b30565b82800160010185558215612b3057600052602060002091601f016020900482015b82811115612b30578254825591600101919060010190612b15565b5b50612b519291505b80821115611add5760008155600101611ac9565b5090565b5050600382810154908201556004808301549082015560059182018054929091018054600160a060020a031916606060020a600160a060020a0394851681020417808255825460a060020a60ff021990911660f860020a60a060020a9283900460ff908116820282900490930291909117808455935460a860020a60ff021990941660a860020a9485900490921681020490920291909117905560408051868152339092166020830152818101849052517f8f8bbb8c1937f844f6a094cd4c6eeab8ed5e36f83952e6306ffb2c11fffe5bce916060908290030190a15b50505050565b6000805b601854811015612c7957601881815481101561000057906000526020600020906007020160005b5054831415612c7057809150612c79565b5b600101612c38565b5b50919050565b600160a060020a0381166000908152600160205260409020545b919050565b60065433600160a060020a03908116911614612cba57610000565b600160a060020a03301660009081526001602052604080822080548354038355829055517fe0987873419fe09d3c9a3e0267f4daf163e812d512f867abaf6bf9822f141a8b9190a15b5b565b60408051602080820183526000825260198054845160026001831615610100026000190190921691909104601f810184900484028201840190955284815292939091830182828015610ebe5780601f10610e9357610100808354040283529160200191610ebe565b820191906000526020600020905b815481529060010190602001808311610ea157829003601f168201915b505050505090505b90565b6011545b90565b600f805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c545780601f10610c2957610100808354040283529160200191610c54565b820191906000526020600020905b815481529060010190602001808311610c3757829003601f168201915b505050505081565b6000602082511115612e4a57610000565b5060208101515b919050565b6000601882815481101561000057906000526020600020906007020160005b505490505b919050565b600160a060020a033316600090815260016020526040812054829010801590612ea85750600082115b15612f2057600160a060020a03338116600081815260016020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610cc156610cc1565b506000610cc1565b5b92915050565b600160a060020a0333166000908152600a60205260409020541515612f5357610000565b600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151626ebe00014210159050612fc857610000565b601b5415801590612fe25750426019600201546212750001115b15612fec57610000565b6040805160808101825283815260208082018490524262127500018284015233600160a060020a03166000908152600a8252928320546060830152815180516019805495819052939484937f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969560026001841615610100026000190190931692909204601f9081018290048301949091019083901061309557805160ff19168380011785556130c2565b828001600101855582156130c2579182015b828111156130c25782518255916020019190600101906130a7565b5b506130e39291505b80821115611add5760008155600101611ac9565b5090565b505060208201518160010160006101000a815481600160a060020a030219169083606060020a908102040217905550604082015181600201556060820151816003015590505060016019600401600033600160a060020a0316815260200190815260200160002060006101000a81548160ff021916908360f860020a9081020402179055507f854a9cc4d907d23cd8dcc72af48dc0e6a87e6f76376a309a0ffa3231ce8e13363383426212750001846040518085600160a060020a031681526020018060200184815260200183600160a060020a031681526020018281038252858181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156132165780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a15b5050565b60065433600160a060020a0390811691161461324657610000565b600b819055600080546011546040519192909184917f17a7f53ef43da32c3936b4ac2b060caff5c4b03cd24b1c8e96a191eb1ec48d1591a45b5b50565b6000600960009054906101000a9004600160a060020a0316600160a060020a03166370a08231306000604051602001526040518260e060020a0281526004018082600160a060020a03168152602001915050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b90565b6000545b90565b600c545b90565b600160a060020a0381166000908152600a60205260409020545b919050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b9291505056

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000001c3c643f49be262c3040e917e7d2299b9bc081a1000000000000000000000000b582baaf5e749d6aa98a22355a9d08b4c4d013c8000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000008657468657269736300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035253430000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : eventInfoAddr (address): 0x1c3c643F49BE262c3040E917E7D2299b9bc081A1
Arg [1] : hackerGoldAddr (address): 0xb582baaF5e749d6aA98A22355A9d08B4c4d013C8
Arg [2] : dstName (string): etherisc
Arg [3] : dstSymbol (string): RSC

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000001c3c643f49be262c3040e917e7d2299b9bc081a1
Arg [1] : 000000000000000000000000b582baaf5e749d6aa98a22355a9d08b4c4d013c8
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [5] : 6574686572697363000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 5253430000000000000000000000000000000000000000000000000000000000


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.