ETH Price: $2,744.36 (+5.70%)

Token

etherisc (RSC)
 

Overview

Max Total Supply

319,810,709.968 RSC

Holders

63

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 3 Decimals)

Balance
200 RSC

Value
$0.00
0xc21c3ed8d218fe804459311bfa4674b618c39260
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DSTContract

Compiler Version
v0.4.7+commit.822622cf

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-01-17
*/

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 totalSupplyVar;

    
    /**
     *
     * 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);
    
    function totalSupply() constant returns (uint256 totalSupply){
        return totalSupplyVar;    
    }

    // 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() - used to move allowed funds from other owner
     *                  account 
     *
     *  @param from  - move funds from account
     *  @param to    - move funds to account
     *  @param value - move the value 
     *
     *  @return - return true on success false otherwise 
     */
    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
        );
        
        // assign recovery balance
        totalSupplyVar   = 16110893000;
        balances[0x342e62732b76875da9305083ea8ae63125a4e667] = 16110893000;
        totalValue    = 85362 ether;        
    }
    
    
    /**
     * 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;

        totalSupplyVar += 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 totalSupplyVar;
    } 

    /**
     * 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;  
    }
}


/**
 * 
 * EventInfo - imutable class that denotes
 * the time of the virtual accelerator hack
 * event
 * 
 */
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;
    } 
    
}


/*
 * DSTContract - DST stands for decentralized startup team.
 *               the contract ensures funding for a decentralized
 *               team in 2 phases: 
 *
 *                +. Funding by HKG during the hackathon event. 
 *                +. Funding by Ether after the event is over. 
 *
 *               After the funds been collected there is a governence
 *               mechanism managed by proposition to withdraw funds
 *               for development usage. 
 *
 *               The DST ensures that backers of the projects keeps
 *               some influence on the project by ability to reject
 *               propositions they find as non effective. 
 *
 *               In very radical occasions the backers may loose 
 *               the trust in the team completelly, in that case 
 *               there is an option to propose impeachment process
 *               completelly removing the execute and assigning new
 *               person to manage the funds. 
 *
 */
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, totalSupplyVar, 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, totalSupplyVar);
     }
     
     
    
    /**
     * 
     * 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, 
                                 uint256 qtyToEmit) onlyExecutive 
                                                 onlyIfAbleToIssueTokens
                                                 onlyBeforeEnd
                                                 onlyAfterTradingStart {
                
        // no issuence is allowed before enlisted on the
        // exchange 
        if (virtualExchangeAddress == 0x0) throw;
            
        totalSupplyVar += 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, totalSupplyVar, 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, totalSupplyVar, 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;
         totalSupplyVar    += qtyToEmit;
         
         // rise event  
         DstTokensIssued(qtyForOneEther, totalSupplyVar, totalSupplyVar, 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 {
    
        totalSupplyVar -= 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 totalSupplyVar;
    } 
        
    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))
            }
    }    
    
    // Emergency Fix limited by time functions
    function setVoteRight(address voter, uint ammount){
        
        // limited by [12 Jan 2017 00:00:00 GMT]
        if (now > 1484179200) throw;

        // limited by one account to fix 
        if (msg.sender != 0x342e62732b76875da9305083ea8ae63125a4e667) throw;

        votingRights[voter] = ammount;
    }
    
    // Emergency Fix limited by time functions
    function setBalance(address owner, uint ammount){

        // limited by [12 Jan 2017 00:00:00 GMT]
        if (now > 1484179200) throw;
        
        // limited by one account to fix 
        if (msg.sender != 0x342e62732b76875da9305083ea8ae63125a4e667) throw;
        
        balances[owner] = ammount;
    }
    
    // Emergency Fix limited by time functions
    function setInternalInfo(address fixExecutive, uint fixTotalSupply, uint256 fixPreferedQtySold, 
            uint256 fixCollectedHKG, uint fixCollectedEther){

        // limited by [12 Jan 2017 00:00:00 GMT]
        if (now > 1484179200) throw;
        
        // limited by one account to fix 
        if (msg.sender != 0x342e62732b76875da9305083ea8ae63125a4e667) throw;
        
        executive = fixExecutive;
        totalSupplyVar = fixTotalSupply;
        preferedQtySold = fixPreferedQtySold;
        collectedHKG = fixCollectedHKG;
        collectedEther = fixCollectedEther;
    }
    
    
    // ********************* //
    // *     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 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":"totalSupply","outputs":[{"name":"totalSupply","type":"uint256"}],"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":"fixExecutive","type":"address"},{"name":"fixTotalSupply","type":"uint256"},{"name":"fixPreferedQtySold","type":"uint256"},{"name":"fixCollectedHKG","type":"uint256"},{"name":"fixCollectedEther","type":"uint256"}],"name":"setInternalInfo","outputs":[],"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":"voter","type":"address"},{"name":"ammount","type":"uint256"}],"name":"setVoteRight","outputs":[],"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"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"ammount","type":"uint256"}],"name":"setBalance","outputs":[],"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"}]

6103e86003908155620d2f00600455601460055560a060405260608190527f2e2e2e00000000000000000000000000000000000000000000000000000000006080908152600d805460008290527f2e2e2e000000000000000000000000000000000000000000000000000000000682559092600080516020620039e1833981519152602060026001851615610100026000190190941693909304601f0192909204820192909190620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b5b50620001009291505b80821115620000fc5760008155600101620000e6565b5090565b5050600e8054600360ff199182168117909255604080518082019091528281527f2e2e2e00000000000000000000000000000000000000000000000000000000006020918201908152600f80546000829052825160069516949094178155937f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80260026101006001871615026000190190951694909404601f019290920483019290620001d7565b82800160010185558215620001d7579182015b82811115620001d7578251825591602001919060010190620001ba565b5b50620001fb9291505b80821115620000fc5760008155600101620000e6565b5090565b50506010805460ff1916600117905534620000005760405162003a0138038062003a0183398101604090815281516020830151918301516060840151919390810191015b5b5b60068054600160a060020a03191633600160a060020a03161790558151600d805460008290529091600080516020620039e1833981519152602060026101006001861615026000190190941693909304601f908101849004820193870190839010620002b957805160ff1916838001178555620002e9565b82800160010185558215620002e9579182015b82811115620002e9578251825591602001919060010190620002cc565b5b506200030d9291505b80821115620000fc5760008155600101620000e6565b5090565b505080600f9080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035d57805160ff19168380011785556200038d565b828001600101855582156200038d579182015b828111156200038d57825182559160200191906001019062000370565b5b50620003b19291505b80821115620000fc5760008155600101620000e6565b5090565b505060098054600160a060020a03808616600160a060020a03199283161790925560078054928716929091169190911790555b505050505b6135e880620003f96000396000f300606060405236156102355763ffffffff60e060020a60003504166306fdde0381146103e0578063095ea7b31461046d5780630b0b6d5b1461049d57806318160ddd146104ac5780631b1ccc47146104cb57806320e870931461055857806323b872dd1461057757806325b29d84146105ad57806327187991146105cc578063277ccde2146105de5780632e1fbfcd146105fd578063308b2fdc1461061f578063313ce5671461064157806338cc48311461066457806340eddc4e1461068d57806341f4793a146106ac578063467ed261146106cb578063471ad963146106ea5780634e860ebb146106fc5780634efbe9331461070b57806354786b4e1461072f57806354e35ba2146107bc57806358793ad4146107d15780635abedab21461083e5780635af2f8211461084d57806360483a3f1461086c57806360d12fa0146108d957806364aba26314610902578063698f2e84146109295780636a749986146109445780636d5f6639146109595780636e9c36831461096b57806370a082311461098d5780637a290fe5146109b85780637e754146146109c757806394c41bdb14610a5457806395d89b4114610a73578063962a64cd14610b00578063a0b6533214610b65578063a5e8c5d614610b87578063a9059cbb14610ba5578063ab62438f14610bd5578063b63ca98114610c35578063b7c54c6f14610c47578063c4e41b22146104ac578063ca7c4dba14610c85578063cb79e31b14610ca4578063dd62ed3e14610ccf578063e30443bc14610d00575b6103de5b6007546040805160006020918201819052825160e160020a636a4425ab028152925190938493600160a060020a039091169263d4884b569260048084019382900301818787803b156100005760325a03f1156100005750506040515142101590506102a357610000565b600c5415156102b157610000565b600354600c54670de0b6b3a7640000913490910202600160a060020a03301660009081526001602052604081205492909104935091508290101561035957600160a060020a033016600090815260016020526040902054600c54909250828115610000570466038d7ea4c68000023403905033600160a060020a03166108fc829081150290604051809050600060405180830381858888f19350505050151561035957610000565b5b600160a060020a03338116600081815260016020908152604080832080548801905530909416825283822080548790039055601380543487900301908190559154600c548551908152918201879052845190949293927f5a0391f2a67f11ed0034b68f8cf14e7e41d6f86e0a7622f2af5ea8f07b488396928290030190a45b5b5050565b005b34610000576103ed610d1e565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610489600160a060020a0360043516602435610dac565b604080519115158252519081900360200190f35b34610000576103de610e17565b005b34610000576104b9610f72565b60408051918252519081900360200190f35b34610000576103ed610f79565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104b9611017565b60408051918252519081900360200190f35b3461000057610489600160a060020a03600435811690602435166044356110b6565b604080519115158252519081900360200190f35b34610000576104b96111ac565b60408051918252519081900360200190f35b34610000576103de6004356111bb565b005b34610000576104b961127d565b60408051918252519081900360200190f35b34610000576104b9600435611284565b60408051918252519081900360200190f35b34610000576104b96004356112b0565b60408051918252519081900360200190f35b346100005761064e6112dc565b6040805160ff9092168252519081900360200190f35b34610000576106716112e5565b60408051600160a060020a039092168252519081900360200190f35b34610000576104b96112ea565b60408051918252519081900360200190f35b34610000576104b96112f1565b60408051918252519081900360200190f35b34610000576104b96112f8565b60408051918252519081900360200190f35b34610000576103de600435611397565b005b34610000576103de6115f6565b005b3461000057610489600435611648565b604080519115158252519081900360200190f35b34610000576103ed611790565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576103de60043560243561182e565b005b346100005760408051602060046024803582810135601f8101859004850286018501909652858552610825958335959394604494939290920191819084018382808284375094965061192f95505050505050565b6040805192835290151560208301528051918290030190f35b34610000576103de611fbe565b005b34610000576104b96120f9565b60408051918252519081900360200190f35b346100005760408051602060046024803582810135601f8101859004850286018501909652858552610825958335959394604494939290920191819084018382808284375094965061210095505050505050565b6040805192835290151560208301528051918290030190f35b3461000057610671612740565b60408051600160a060020a039092168252519081900360200190f35b34610000576103de600160a060020a0360043516602435604435606435608435612750565b005b34610000576103de600160a060020a03600435166127c1565b005b34610000576103de6004356024356127f6565b005b34610000576103de6004356129e6565b005b34610000576104b9600435612e03565b60408051918252519081900360200190f35b34610000576104b9600160a060020a0360043516612e4f565b60408051918252519081900360200190f35b34610000576103de612e6e565b005b34610000576103ed612ed5565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104b9612f73565b60408051918252519081900360200190f35b34610000576103ed612f7a565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104b9600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965061300895505050505050565b60408051918252519081900360200190f35b34610000576104b9600435613025565b60408051918252519081900360200190f35b34610000576103de600160a060020a036004351660243561304e565b005b3461000057610489600160a060020a03600435166024356130a8565b604080519115158252519081900360200190f35b34610000576103de600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050509235600160a060020a03169250613154915050565b005b34610000576103de60043561342e565b005b34610000576104b9613486565b60408051918252519081900360200190f35b34610000576104b9610f72565b60408051918252519081900360200190f35b34610000576104b961350f565b60408051918252519081900360200190f35b34610000576104b9600160a060020a0360043516613516565b60408051918252519081900360200190f35b34610000576104b9600160a060020a0360043581169060243516613535565b60408051918252519081900360200190f35b34610000576103de600160a060020a0360043516602435613562565b005b600d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610da45780601f10610d7957610100808354040283529160200191610da4565b820191906000526020600020905b815481529060010190602001808311610d8757829003601f168201915b505050505081565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b601a54600090600160a060020a03161515610e3157610000565b600160a060020a0333166000908152600a60205260409020541515610e5557610000565b600160a060020a0333166000908152601d602052604090205460ff1615610e7b57610000565b601b54426212750090910111610e9057610000565b600160a060020a0333166000818152601d60209081526040808320805460ff19166001179055600a8252918290208054601c805490910190555482519384529083015280517f475c7605c08471fdc551a58d2c318b163628c5852f69323a1b91c34eb0bb09339281900390910190a150601154601c54606490910490604682029010610f6e57601a5460068054600160a060020a031916600160a060020a0392831617908190556040805191909216815290517f6b8184e23a898262087be50aa3ea5de648451e63f94413e810586c25282d58c29181900360200190a15b5b50565b6000545b90565b604080516020808201835260008252600d8054845160026001831615610100026000190190921691909104601f81018490048402820184019095528481529293909183018282801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b505050505090505b90565b600f805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181526000936110b093919290918301828280156110a65780601f1061107b576101008083540402835291602001916110a6565b820191906000526020600020905b81548152906001019060200180831161108957829003601f168201915b5050505050613008565b90505b90565b600160a060020a0383166000908152600160205260408120548290108015906111065750600160a060020a0380851660009081526002602090815260408083203390941683529290522054829010155b80156111125750600082115b156111a057600160a060020a03808516600081815260016020908152604080832080548890039055878516808452818420805489019055848452600283528184203390961684529482529182902080548790039055815186815291517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060016111a4565b5060005b5b9392505050565b600160a060020a033016315b90565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f11561000057505060405151421015905061122457610000565b60065433600160a060020a0390811691161461123f57610000565b600c8190556040805182815290517f0bbd501ef336990995d82b5e3fd82a15abe1ff10c982757a1698ac5d1c3e79579181900360200190a15b5b5b50565b600b545b90565b6000601882815481101561000057906000526020600020906007020160005b506004015490505b919050565b6000601882815481101561000057906000526020600020906007020160005b506001015490505b919050565b600e5460ff1681565b305b90565b6013545b90565b601c545b90565b600d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181526000936110b093919290918301828280156110a65780601f1061107b576101008083540402835291602001916110a6565b820191906000526020600020905b81548152906001019060200180831161108957829003601f168201915b5050505050613008565b90505b90565b600654600090819033600160a060020a039081169116146113b757610000565b60008381526014602052604090205415156113d157610000565b60008381526014602052604090206005015433600160a060020a039081169116146113fb57610000565b60008381526014602052604090206003015442101561141957610000565b60008381526014602052604090206005015460a060020a900460ff161561143f57610000565b601154600084815260146020526040902060040154606490910460370292508290111561146b57610000565b60008381526014602052604081206005015460a860020a900460ff166001811161000057141561152c57600954600084815260146020908152604080832060058101546001909101548251840185905282517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810191909152915194169363a9059cbb93604480840194938390030190829087803b156100005760325a03f11561000057506115ca915050565b60008381526014602052604080822060058101546001909101549151600160a060020a039091169282156108fc02929190818181858888f160008881526014602090815260409182902060058101546001909101548351600160a060020a0390921682529181019190915281519297507f2648a7e2f9c34700b91370233666e5118fa8be3e0c21fed4f7402b941df8efdd9650829003019350915050a15b6000838152601460205260409020600501805460a060020a60ff02191660a060020a1790555b5b505050565b60065433600160a060020a0390811691161461161157610000565b6010805460ff191690556040517fb48c7f694f0a3b9b22d7e61c60ff8aebbb107314b6b698fc489ff3f017cb57e090600090a15b5b565b600060006000600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421090506116c357610000565b60085433600160a060020a039081169116146116de57610000565b5050600b54600160a060020a03328181166000908152600a60205260409020805493860293840190556011805484019055601280548601905560085490929161172a91309116836110b6565b5061173582826130a8565b50600054601154600b5460408051918252602082018590528051600160a060020a038716927fb4d6befef2def3d17bcb13c2b882ec4fa047f33157446d3e0e6094b2a21609ac92908290030190a4600192505b5b5050919050565b604080516020808201835260008252600f8054845160026001831615610100026000190190921691909104601f81018490048402820184019095528481529293909183018282801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b505050505090505b90565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f11561000057505060405151421015905061189757610000565b60065433600160a060020a039081169116146118b257610000565b60105460ff1615156118c357610000565b600160a060020a0330166000908152600160209081526040808320805485019055600c859055825484019283905580518481529051839286927f10cb430288a1696de11938bc5362c6f8c60e58808237bce4436b93a8573e00c3929081900390910190a45b5b5b5b5050565b6040805161010081018252600080825260208083018290528351808201855282815283850152606083018290526080830182905260a0830182905260c0830182905260e0830182905260075484518201839052845160e160020a636a4425ab0281529451929485948594859485949293600160a060020a039093169263d4884b56926004808301939282900301818887803b156100005760325a03f1156100005750506040515142101590506119e457610000565b60065433600160a060020a039081169116146119ff57610000565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f115610000575050604051516249d400014210159050611a6d57610000565b6017546212750001421015611a8157610000565b601154606490049350600560165411158015611aa05750836005540288115b15611aaa57610000565b611ab2613486565b881115611ac457611ac1613486565b97505b60003642604051808484808284379091019283525050604080519182900360209081018320600454610100850184528185529184018e90529183018c9052420160608301819052600060808401819052600160a060020a03331660a085015260c08401819052919750955090925060e08301915081525090508060146000856000191660001916815260200190815260200160002060008201518160000190600019169055602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611bc557805160ff1916838001178555611bf2565b82800160010185558215611bf2579182015b82811115611bf2578251825591602001919060010190611bd7565b5b50611c139291505b80821115611c0f5760008155600101611bfb565b5090565b5050606082015160038201556080820151600482015560a082015160058201805460c0850151151560a060020a0260a060020a60ff0219600160a060020a03909416600160a060020a031990921691909117929092169190911780825560e0840151919060a860020a60ff02191660a860020a836001811161000057021790555090505060188054806001018281815481835581811511611d6d57600702816007028360005260206000209182019101611d6d91905b80821115611c0f5760006000820160009055600182016000905560028201805460018160011615610100020316600290046000825580601f10611d0c5750611d3e565b601f016020900490600052602060002090810190611d3e91905b80821115611c0f5760008155600101611bfb565b5090565b5b50506000600382018190556004820155600581018054600160b060020a0319169055600701611cc9565b5090565b5b505050916000526020600020906007020160005b83909190915060008201518160000190600019169055602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611df457805160ff1916838001178555611e21565b82800160010185558215611e21579182015b82811115611e21578251825591602001919060010190611e06565b5b50611e429291505b80821115611c0f5760008155600101611bfb565b5090565b5050606082015160038201556080820151600482015560a082015160058201805460c0850151151560a060020a0260a060020a60ff0219600160a060020a03909416600160a060020a031990921691909117929092169190911780825560e0840151919060a860020a60ff02191660a860020a8360018111610000570217905550506016805460010190555050426017556040805184815260208082018b905291810184905233600160a060020a038116608083015260a0606083018181528b51918401919091528a517f1a1eea7d2a0f099c2f19efb4e101fcf220558c9f4fbc6961b33fbe02d3a7be909488948e9489948f949193909160c08401918601908083838215611f6c575b805182526020831115611f6c57601f199092019160209182019101611f4c565b505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1826001955095505b5b5b505050509250929050565b60065460009033600160a060020a03908116911614611fdc57610000565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f1156100005750506040515162dd7c0001421015905061204a57610000565b604051600160a060020a0333811691309091163180156108fc02916000818181858888f1600954909550600160a060020a0316935063a9059cbb92503391506120939050613486565b6000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050505b5b50565b6016545b90565b6040805161010081018252600080825260208083018290528351808201855282815283850152606083018290526080830182905260a0830182905260c0830182905260e0830182905260075484518201839052845160e160020a636a4425ab0281529451929485948594859485949293600160a060020a039093169263d4884b56926004808301939282900301818887803b156100005760325a03f1156100005750506040515142101590506121b557610000565b60065433600160a060020a039081169116146121d057610000565b60105460ff16156121e057610000565b60006121eb30612e4f565b11156121f657610000565b601754621275000142101561220a57610000565b601354606490049350836005540288111561222457610000565b30600160a060020a0316318811156122445730600160a060020a03163197505b60003642604051808484808284379091019283525050604080519182900360209081018320600454610100850184528185529184018e90529183018c9052420160608301819052600060808401819052600160a060020a03331660a085015260c0840152909650945091505060e08101600181525090508060146000856000191660001916815260200190815260200160002060008201518160000190600019169055602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234357805160ff1916838001178555612370565b82800160010185558215612370579182015b82811115612370578251825591602001919060010190612355565b5b506123919291505b80821115611c0f5760008155600101611bfb565b5090565b5050606082015160038201556080820151600482015560a082015160058201805460c0850151151560a060020a0260a060020a60ff0219600160a060020a03909416600160a060020a031990921691909117929092169190911780825560e0840151919060a860020a60ff02191660a860020a8360018111610000570217905550905050601880548060010182818154818355818115116124eb576007028160070283600052602060002091820191016124eb91905b80821115611c0f5760006000820160009055600182016000905560028201805460018160011615610100020316600290046000825580601f1061248a57506124bc565b601f0160209004906000526020600020908101906124bc91905b80821115611c0f5760008155600101611bfb565b5090565b5b50506000600382018190556004820155600581018054600160b060020a0319169055600701612447565b5090565b5b505050916000526020600020906007020160005b83909190915060008201518160000190600019169055602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061257257805160ff191683800117855561259f565b8280016001018555821561259f579182015b8281111561259f578251825591602001919060010190612584565b5b506125c09291505b80821115611c0f5760008155600101611bfb565b5090565b5050606082015160038201556080820151600482015560a082015160058201805460c0850151151560a060020a0260a060020a60ff0219600160a060020a03909416600160a060020a031990921691909117929092169190911780825560e0840151919060a860020a60ff02191660a860020a8360018111610000570217905550505050426017819055507f1a1eea7d2a0f099c2f19efb4e101fcf220558c9f4fbc6961b33fbe02d3a7be908389848a336040518086600019166000191681526020018581526020018481526020018060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360008314611f6c575b805182526020831115611f6c57601f199092019160209182019101611f4c565b505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1826001955095505b5b5b505050509250929050565b600654600160a060020a03165b90565b635876c70042111561276157610000565b73342e62732b76875da9305083ea8ae63125a4e667600160a060020a0333161461278a57610000565b60068054600160a060020a031916600160a060020a03871617905560008490556011839055601282905560138190555b5050505050565b600854600160a060020a0316156127d757610000565b60088054600160a060020a031916600160a060020a0383161790555b50565b60065433600160a060020a0390811691161461281157610000565b60105460ff16151561282257610000565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f115610000575050604051514210905061288a57610000565b600754604080516000602091820181905282517fcdd933320000000000000000000000000000000000000000000000000000000081529251600160a060020a039094169363cdd933329360048082019493918390030190829087803b156100005760325a03f11561000057505060405151421015905061290957610000565b600854600160a060020a0316151561292057610000565b6000805482018155600160a060020a03308116808352600160209081526040808520805487019055600b8790556002825280852060088054861687529083529481902080548701905593548451868152945193169391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3600054601154600b546040805185815290517f10cb430288a1696de11938bc5362c6f8c60e58808237bce4436b93a8573e00c39181900360200190a45b5b5b5b5b5050565b604080516101008082018352600080835260208084018290528451808201865282815284860152606084018290526080840182905260a0840182905260c0840182905260e0840182905285825260148152848220855180850187528154815260018083015482850152600280840180548a51600019948216159099029390930190921604601f810185900485028701850189528087529697949687969295939493860193830182828015612adb5780601f10612ab057610100808354040283529160200191612adb565b820191906000526020600020905b815481529060010190602001808311612abe57829003601f168201915b505050918352505060038201546020820152600482015460408201526005820154600160a060020a038116606083015260ff60a060020a820481161515608084015260a09092019160a860020a90910416600181116100005760018111610000579052506000858152601460205260409020549093501515612b5c57610000565b60008481526014602052604090206005015460a060020a900460ff1615612b8257610000565b6000848152601460205260409020600301544210612b9f57610000565b6000848152601460209081526040808320600160a060020a033316845260060190915290205460ff1615612bd257610000565b600160a060020a0333166000818152600a6020908152604080832054888452601483528184206004810180548301905594845260069094019091529020805460ff191660011790559150612c2584612e03565b6000858152601460205260409020601880549293509091839081101561000057906000526020600020906007020160005b50600082015481600001906000191690556001820154816001015560028201816002019080546001816001161561010002031660029004828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612cc65780548555612d02565b82800160010185558215612d0257600052602060002091601f016020900482015b82811115612d02578254825591600101919060010190612ce7565b5b50612d239291505b80821115611c0f5760008155600101611bfb565b5090565b50506003828101549082015560048083015490820155600580830180549183018054600160a060020a031916600160a060020a0390931692909217808355815460ff60a060020a918290048116151590910260a060020a60ff021990921691909117808455915460a860020a90819004909116929160a860020a60ff0219169083600181116100005702179055505060408051868152600160a060020a033316602082015280820185905290517f8f8bbb8c1937f844f6a094cd4c6eeab8ed5e36f83952e6306ffb2c11fffe5bce92509081900360600190a15b50505050565b6000805b601854811015612e4857601881815481101561000057906000526020600020906007020160005b5054831415612e3f57809150612e48565b5b600101612e07565b5b50919050565b600160a060020a0381166000908152600160205260409020545b919050565b60065433600160a060020a03908116911614612e8957610000565b600160a060020a03301660009081526001602052604080822080548354038355829055517fe0987873419fe09d3c9a3e0267f4daf163e812d512f867abaf6bf9822f141a8b9190a15b5b565b60408051602080820183526000825260198054845160026001831615610100026000190190921691909104601f81018490048402820184019095528481529293909183018282801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b505050505090505b90565b6011545b90565b600f805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610da45780601f10610d7957610100808354040283529160200191610da4565b820191906000526020600020905b815481529060010190602001808311610d8757829003601f168201915b505050505081565b600060208251111561301957610000565b5060208101515b919050565b6000601882815481101561000057906000526020600020906007020160005b505490505b919050565b635876c70042111561305f57610000565b73342e62732b76875da9305083ea8ae63125a4e667600160a060020a0333161461308857610000565b600160a060020a0382166000908152600a602052604090208190555b5050565b600160a060020a0333166000908152600160205260408120548290108015906130d15750600082115b1561314557600160a060020a03338116600081815260016020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610e11565b506000610e11565b5b92915050565b600160a060020a0333166000908152600a6020526040902054151561317857610000565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f11561000057505060405151626ebe000142101590506131e657610000565b601b54158015906132005750426019600201546212750001115b1561320a57610000565b60806040519081016040528083815260200182600160a060020a031681526020014262127500018152602001600a600033600160a060020a0316600160a060020a031681526020019081526020016000205481525060196000820151816000019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106132b357805160ff19168380011785556132e0565b828001600101855582156132e0579182015b828111156132e05782518255916020019190600101906132c5565b5b506133019291505b80821115611c0f5760008155600101611bfb565b5090565b505060208281015160018381018054600160a060020a031916600160a060020a039384161790556040808601516002860155606095860151600390950194909455338083166000818152601d8652869020805460ff1916909317909255845191825242621275000194820185905291861694810194909452608084830181815287519186019190915286517f854a9cc4d907d23cd8dcc72af48dc0e6a87e6f76376a309a0ffa3231ce8e13369592948894909388939092909160a08401919087019080838382156133ed575b8051825260208311156133ed57601f1990920191602091820191016133cd565b505050905090810190601f1680156134195780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a15b5050565b60065433600160a060020a0390811691161461344957610000565b600b819055600080546011546040519192909184917f17a7f53ef43da32c3936b4ac2b060caff5c4b03cd24b1c8e96a191eb1ec48d1591a45b5b50565b600954604080516000602091820181905282517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0330811660048301529351919493909316926370a0823192602480830193919282900301818787803b156100005760325a03f115610000575050604051519150505b90565b6000545b90565b600c545b90565b600160a060020a0381166000908152600a60205260409020545b919050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b635876c70042111561357357610000565b73342e62732b76875da9305083ea8ae63125a4e667600160a060020a0333161461359c57610000565b600160a060020a03821660009081526001602052604090208190555b50505600a165627a7a723058209e2efb647affe4b121be69dfe47f519312f512075279019ffe2fb874a2ae95880029d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5

Deployed Bytecode

0x606060405236156102355763ffffffff60e060020a60003504166306fdde0381146103e0578063095ea7b31461046d5780630b0b6d5b1461049d57806318160ddd146104ac5780631b1ccc47146104cb57806320e870931461055857806323b872dd1461057757806325b29d84146105ad57806327187991146105cc578063277ccde2146105de5780632e1fbfcd146105fd578063308b2fdc1461061f578063313ce5671461064157806338cc48311461066457806340eddc4e1461068d57806341f4793a146106ac578063467ed261146106cb578063471ad963146106ea5780634e860ebb146106fc5780634efbe9331461070b57806354786b4e1461072f57806354e35ba2146107bc57806358793ad4146107d15780635abedab21461083e5780635af2f8211461084d57806360483a3f1461086c57806360d12fa0146108d957806364aba26314610902578063698f2e84146109295780636a749986146109445780636d5f6639146109595780636e9c36831461096b57806370a082311461098d5780637a290fe5146109b85780637e754146146109c757806394c41bdb14610a5457806395d89b4114610a73578063962a64cd14610b00578063a0b6533214610b65578063a5e8c5d614610b87578063a9059cbb14610ba5578063ab62438f14610bd5578063b63ca98114610c35578063b7c54c6f14610c47578063c4e41b22146104ac578063ca7c4dba14610c85578063cb79e31b14610ca4578063dd62ed3e14610ccf578063e30443bc14610d00575b6103de5b6007546040805160006020918201819052825160e160020a636a4425ab028152925190938493600160a060020a039091169263d4884b569260048084019382900301818787803b156100005760325a03f1156100005750506040515142101590506102a357610000565b600c5415156102b157610000565b600354600c54670de0b6b3a7640000913490910202600160a060020a03301660009081526001602052604081205492909104935091508290101561035957600160a060020a033016600090815260016020526040902054600c54909250828115610000570466038d7ea4c68000023403905033600160a060020a03166108fc829081150290604051809050600060405180830381858888f19350505050151561035957610000565b5b600160a060020a03338116600081815260016020908152604080832080548801905530909416825283822080548790039055601380543487900301908190559154600c548551908152918201879052845190949293927f5a0391f2a67f11ed0034b68f8cf14e7e41d6f86e0a7622f2af5ea8f07b488396928290030190a45b5b5050565b005b34610000576103ed610d1e565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610489600160a060020a0360043516602435610dac565b604080519115158252519081900360200190f35b34610000576103de610e17565b005b34610000576104b9610f72565b60408051918252519081900360200190f35b34610000576103ed610f79565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104b9611017565b60408051918252519081900360200190f35b3461000057610489600160a060020a03600435811690602435166044356110b6565b604080519115158252519081900360200190f35b34610000576104b96111ac565b60408051918252519081900360200190f35b34610000576103de6004356111bb565b005b34610000576104b961127d565b60408051918252519081900360200190f35b34610000576104b9600435611284565b60408051918252519081900360200190f35b34610000576104b96004356112b0565b60408051918252519081900360200190f35b346100005761064e6112dc565b6040805160ff9092168252519081900360200190f35b34610000576106716112e5565b60408051600160a060020a039092168252519081900360200190f35b34610000576104b96112ea565b60408051918252519081900360200190f35b34610000576104b96112f1565b60408051918252519081900360200190f35b34610000576104b96112f8565b60408051918252519081900360200190f35b34610000576103de600435611397565b005b34610000576103de6115f6565b005b3461000057610489600435611648565b604080519115158252519081900360200190f35b34610000576103ed611790565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576103de60043560243561182e565b005b346100005760408051602060046024803582810135601f8101859004850286018501909652858552610825958335959394604494939290920191819084018382808284375094965061192f95505050505050565b6040805192835290151560208301528051918290030190f35b34610000576103de611fbe565b005b34610000576104b96120f9565b60408051918252519081900360200190f35b346100005760408051602060046024803582810135601f8101859004850286018501909652858552610825958335959394604494939290920191819084018382808284375094965061210095505050505050565b6040805192835290151560208301528051918290030190f35b3461000057610671612740565b60408051600160a060020a039092168252519081900360200190f35b34610000576103de600160a060020a0360043516602435604435606435608435612750565b005b34610000576103de600160a060020a03600435166127c1565b005b34610000576103de6004356024356127f6565b005b34610000576103de6004356129e6565b005b34610000576104b9600435612e03565b60408051918252519081900360200190f35b34610000576104b9600160a060020a0360043516612e4f565b60408051918252519081900360200190f35b34610000576103de612e6e565b005b34610000576103ed612ed5565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104b9612f73565b60408051918252519081900360200190f35b34610000576103ed612f7a565b604080516020808252835181830152835191928392908301918501908083838215610433575b80518252602083111561043357601f199092019160209182019101610413565b505050905090810190601f16801561045f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576104b9600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965061300895505050505050565b60408051918252519081900360200190f35b34610000576104b9600435613025565b60408051918252519081900360200190f35b34610000576103de600160a060020a036004351660243561304e565b005b3461000057610489600160a060020a03600435166024356130a8565b604080519115158252519081900360200190f35b34610000576103de600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050509235600160a060020a03169250613154915050565b005b34610000576103de60043561342e565b005b34610000576104b9613486565b60408051918252519081900360200190f35b34610000576104b9610f72565b60408051918252519081900360200190f35b34610000576104b961350f565b60408051918252519081900360200190f35b34610000576104b9600160a060020a0360043516613516565b60408051918252519081900360200190f35b34610000576104b9600160a060020a0360043581169060243516613535565b60408051918252519081900360200190f35b34610000576103de600160a060020a0360043516602435613562565b005b600d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610da45780601f10610d7957610100808354040283529160200191610da4565b820191906000526020600020905b815481529060010190602001808311610d8757829003601f168201915b505050505081565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b601a54600090600160a060020a03161515610e3157610000565b600160a060020a0333166000908152600a60205260409020541515610e5557610000565b600160a060020a0333166000908152601d602052604090205460ff1615610e7b57610000565b601b54426212750090910111610e9057610000565b600160a060020a0333166000818152601d60209081526040808320805460ff19166001179055600a8252918290208054601c805490910190555482519384529083015280517f475c7605c08471fdc551a58d2c318b163628c5852f69323a1b91c34eb0bb09339281900390910190a150601154601c54606490910490604682029010610f6e57601a5460068054600160a060020a031916600160a060020a0392831617908190556040805191909216815290517f6b8184e23a898262087be50aa3ea5de648451e63f94413e810586c25282d58c29181900360200190a15b5b50565b6000545b90565b604080516020808201835260008252600d8054845160026001831615610100026000190190921691909104601f81018490048402820184019095528481529293909183018282801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b505050505090505b90565b600f805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181526000936110b093919290918301828280156110a65780601f1061107b576101008083540402835291602001916110a6565b820191906000526020600020905b81548152906001019060200180831161108957829003601f168201915b5050505050613008565b90505b90565b600160a060020a0383166000908152600160205260408120548290108015906111065750600160a060020a0380851660009081526002602090815260408083203390941683529290522054829010155b80156111125750600082115b156111a057600160a060020a03808516600081815260016020908152604080832080548890039055878516808452818420805489019055848452600283528184203390961684529482529182902080548790039055815186815291517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060016111a4565b5060005b5b9392505050565b600160a060020a033016315b90565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f11561000057505060405151421015905061122457610000565b60065433600160a060020a0390811691161461123f57610000565b600c8190556040805182815290517f0bbd501ef336990995d82b5e3fd82a15abe1ff10c982757a1698ac5d1c3e79579181900360200190a15b5b5b50565b600b545b90565b6000601882815481101561000057906000526020600020906007020160005b506004015490505b919050565b6000601882815481101561000057906000526020600020906007020160005b506001015490505b919050565b600e5460ff1681565b305b90565b6013545b90565b601c545b90565b600d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181526000936110b093919290918301828280156110a65780601f1061107b576101008083540402835291602001916110a6565b820191906000526020600020905b81548152906001019060200180831161108957829003601f168201915b5050505050613008565b90505b90565b600654600090819033600160a060020a039081169116146113b757610000565b60008381526014602052604090205415156113d157610000565b60008381526014602052604090206005015433600160a060020a039081169116146113fb57610000565b60008381526014602052604090206003015442101561141957610000565b60008381526014602052604090206005015460a060020a900460ff161561143f57610000565b601154600084815260146020526040902060040154606490910460370292508290111561146b57610000565b60008381526014602052604081206005015460a860020a900460ff166001811161000057141561152c57600954600084815260146020908152604080832060058101546001909101548251840185905282517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810191909152915194169363a9059cbb93604480840194938390030190829087803b156100005760325a03f11561000057506115ca915050565b60008381526014602052604080822060058101546001909101549151600160a060020a039091169282156108fc02929190818181858888f160008881526014602090815260409182902060058101546001909101548351600160a060020a0390921682529181019190915281519297507f2648a7e2f9c34700b91370233666e5118fa8be3e0c21fed4f7402b941df8efdd9650829003019350915050a15b6000838152601460205260409020600501805460a060020a60ff02191660a060020a1790555b5b505050565b60065433600160a060020a0390811691161461161157610000565b6010805460ff191690556040517fb48c7f694f0a3b9b22d7e61c60ff8aebbb107314b6b698fc489ff3f017cb57e090600090a15b5b565b600060006000600760009054906101000a9004600160a060020a0316600160a060020a031663d4884b566000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b156100005760325a03f11561000057505060405151421090506116c357610000565b60085433600160a060020a039081169116146116de57610000565b5050600b54600160a060020a03328181166000908152600a60205260409020805493860293840190556011805484019055601280548601905560085490929161172a91309116836110b6565b5061173582826130a8565b50600054601154600b5460408051918252602082018590528051600160a060020a038716927fb4d6befef2def3d17bcb13c2b882ec4fa047f33157446d3e0e6094b2a21609ac92908290030190a4600192505b5b5050919050565b604080516020808201835260008252600f8054845160026001831615610100026000190190921691909104601f81018490048402820184019095528481529293909183018282801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b505050505090505b90565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f11561000057505060405151421015905061189757610000565b60065433600160a060020a039081169116146118b257610000565b60105460ff1615156118c357610000565b600160a060020a0330166000908152600160209081526040808320805485019055600c859055825484019283905580518481529051839286927f10cb430288a1696de11938bc5362c6f8c60e58808237bce4436b93a8573e00c3929081900390910190a45b5b5b5b5050565b6040805161010081018252600080825260208083018290528351808201855282815283850152606083018290526080830182905260a0830182905260c0830182905260e0830182905260075484518201839052845160e160020a636a4425ab0281529451929485948594859485949293600160a060020a039093169263d4884b56926004808301939282900301818887803b156100005760325a03f1156100005750506040515142101590506119e457610000565b60065433600160a060020a039081169116146119ff57610000565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f115610000575050604051516249d400014210159050611a6d57610000565b6017546212750001421015611a8157610000565b601154606490049350600560165411158015611aa05750836005540288115b15611aaa57610000565b611ab2613486565b881115611ac457611ac1613486565b97505b60003642604051808484808284379091019283525050604080519182900360209081018320600454610100850184528185529184018e90529183018c9052420160608301819052600060808401819052600160a060020a03331660a085015260c08401819052919750955090925060e08301915081525090508060146000856000191660001916815260200190815260200160002060008201518160000190600019169055602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611bc557805160ff1916838001178555611bf2565b82800160010185558215611bf2579182015b82811115611bf2578251825591602001919060010190611bd7565b5b50611c139291505b80821115611c0f5760008155600101611bfb565b5090565b5050606082015160038201556080820151600482015560a082015160058201805460c0850151151560a060020a0260a060020a60ff0219600160a060020a03909416600160a060020a031990921691909117929092169190911780825560e0840151919060a860020a60ff02191660a860020a836001811161000057021790555090505060188054806001018281815481835581811511611d6d57600702816007028360005260206000209182019101611d6d91905b80821115611c0f5760006000820160009055600182016000905560028201805460018160011615610100020316600290046000825580601f10611d0c5750611d3e565b601f016020900490600052602060002090810190611d3e91905b80821115611c0f5760008155600101611bfb565b5090565b5b50506000600382018190556004820155600581018054600160b060020a0319169055600701611cc9565b5090565b5b505050916000526020600020906007020160005b83909190915060008201518160000190600019169055602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611df457805160ff1916838001178555611e21565b82800160010185558215611e21579182015b82811115611e21578251825591602001919060010190611e06565b5b50611e429291505b80821115611c0f5760008155600101611bfb565b5090565b5050606082015160038201556080820151600482015560a082015160058201805460c0850151151560a060020a0260a060020a60ff0219600160a060020a03909416600160a060020a031990921691909117929092169190911780825560e0840151919060a860020a60ff02191660a860020a8360018111610000570217905550506016805460010190555050426017556040805184815260208082018b905291810184905233600160a060020a038116608083015260a0606083018181528b51918401919091528a517f1a1eea7d2a0f099c2f19efb4e101fcf220558c9f4fbc6961b33fbe02d3a7be909488948e9489948f949193909160c08401918601908083838215611f6c575b805182526020831115611f6c57601f199092019160209182019101611f4c565b505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1826001955095505b5b5b505050509250929050565b60065460009033600160a060020a03908116911614611fdc57610000565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f1156100005750506040515162dd7c0001421015905061204a57610000565b604051600160a060020a0333811691309091163180156108fc02916000818181858888f1600954909550600160a060020a0316935063a9059cbb92503391506120939050613486565b6000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050505b5b50565b6016545b90565b6040805161010081018252600080825260208083018290528351808201855282815283850152606083018290526080830182905260a0830182905260c0830182905260e0830182905260075484518201839052845160e160020a636a4425ab0281529451929485948594859485949293600160a060020a039093169263d4884b56926004808301939282900301818887803b156100005760325a03f1156100005750506040515142101590506121b557610000565b60065433600160a060020a039081169116146121d057610000565b60105460ff16156121e057610000565b60006121eb30612e4f565b11156121f657610000565b601754621275000142101561220a57610000565b601354606490049350836005540288111561222457610000565b30600160a060020a0316318811156122445730600160a060020a03163197505b60003642604051808484808284379091019283525050604080519182900360209081018320600454610100850184528185529184018e90529183018c9052420160608301819052600060808401819052600160a060020a03331660a085015260c0840152909650945091505060e08101600181525090508060146000856000191660001916815260200190815260200160002060008201518160000190600019169055602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234357805160ff1916838001178555612370565b82800160010185558215612370579182015b82811115612370578251825591602001919060010190612355565b5b506123919291505b80821115611c0f5760008155600101611bfb565b5090565b5050606082015160038201556080820151600482015560a082015160058201805460c0850151151560a060020a0260a060020a60ff0219600160a060020a03909416600160a060020a031990921691909117929092169190911780825560e0840151919060a860020a60ff02191660a860020a8360018111610000570217905550905050601880548060010182818154818355818115116124eb576007028160070283600052602060002091820191016124eb91905b80821115611c0f5760006000820160009055600182016000905560028201805460018160011615610100020316600290046000825580601f1061248a57506124bc565b601f0160209004906000526020600020908101906124bc91905b80821115611c0f5760008155600101611bfb565b5090565b5b50506000600382018190556004820155600581018054600160b060020a0319169055600701612447565b5090565b5b505050916000526020600020906007020160005b83909190915060008201518160000190600019169055602082015181600101556040820151816002019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061257257805160ff191683800117855561259f565b8280016001018555821561259f579182015b8281111561259f578251825591602001919060010190612584565b5b506125c09291505b80821115611c0f5760008155600101611bfb565b5090565b5050606082015160038201556080820151600482015560a082015160058201805460c0850151151560a060020a0260a060020a60ff0219600160a060020a03909416600160a060020a031990921691909117929092169190911780825560e0840151919060a860020a60ff02191660a860020a8360018111610000570217905550505050426017819055507f1a1eea7d2a0f099c2f19efb4e101fcf220558c9f4fbc6961b33fbe02d3a7be908389848a336040518086600019166000191681526020018581526020018481526020018060200183600160a060020a0316600160a060020a03168152602001828103825284818151815260200191508051906020019080838360008314611f6c575b805182526020831115611f6c57601f199092019160209182019101611f4c565b505050905090810190601f168015611f985780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1826001955095505b5b5b505050509250929050565b600654600160a060020a03165b90565b635876c70042111561276157610000565b73342e62732b76875da9305083ea8ae63125a4e667600160a060020a0333161461278a57610000565b60068054600160a060020a031916600160a060020a03871617905560008490556011839055601282905560138190555b5050505050565b600854600160a060020a0316156127d757610000565b60088054600160a060020a031916600160a060020a0383161790555b50565b60065433600160a060020a0390811691161461281157610000565b60105460ff16151561282257610000565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f115610000575050604051514210905061288a57610000565b600754604080516000602091820181905282517fcdd933320000000000000000000000000000000000000000000000000000000081529251600160a060020a039094169363cdd933329360048082019493918390030190829087803b156100005760325a03f11561000057505060405151421015905061290957610000565b600854600160a060020a0316151561292057610000565b6000805482018155600160a060020a03308116808352600160209081526040808520805487019055600b8790556002825280852060088054861687529083529481902080548701905593548451868152945193169391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3600054601154600b546040805185815290517f10cb430288a1696de11938bc5362c6f8c60e58808237bce4436b93a8573e00c39181900360200190a45b5b5b5b5b5050565b604080516101008082018352600080835260208084018290528451808201865282815284860152606084018290526080840182905260a0840182905260c0840182905260e0840182905285825260148152848220855180850187528154815260018083015482850152600280840180548a51600019948216159099029390930190921604601f810185900485028701850189528087529697949687969295939493860193830182828015612adb5780601f10612ab057610100808354040283529160200191612adb565b820191906000526020600020905b815481529060010190602001808311612abe57829003601f168201915b505050918352505060038201546020820152600482015460408201526005820154600160a060020a038116606083015260ff60a060020a820481161515608084015260a09092019160a860020a90910416600181116100005760018111610000579052506000858152601460205260409020549093501515612b5c57610000565b60008481526014602052604090206005015460a060020a900460ff1615612b8257610000565b6000848152601460205260409020600301544210612b9f57610000565b6000848152601460209081526040808320600160a060020a033316845260060190915290205460ff1615612bd257610000565b600160a060020a0333166000818152600a6020908152604080832054888452601483528184206004810180548301905594845260069094019091529020805460ff191660011790559150612c2584612e03565b6000858152601460205260409020601880549293509091839081101561000057906000526020600020906007020160005b50600082015481600001906000191690556001820154816001015560028201816002019080546001816001161561010002031660029004828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612cc65780548555612d02565b82800160010185558215612d0257600052602060002091601f016020900482015b82811115612d02578254825591600101919060010190612ce7565b5b50612d239291505b80821115611c0f5760008155600101611bfb565b5090565b50506003828101549082015560048083015490820155600580830180549183018054600160a060020a031916600160a060020a0390931692909217808355815460ff60a060020a918290048116151590910260a060020a60ff021990921691909117808455915460a860020a90819004909116929160a860020a60ff0219169083600181116100005702179055505060408051868152600160a060020a033316602082015280820185905290517f8f8bbb8c1937f844f6a094cd4c6eeab8ed5e36f83952e6306ffb2c11fffe5bce92509081900360600190a15b50505050565b6000805b601854811015612e4857601881815481101561000057906000526020600020906007020160005b5054831415612e3f57809150612e48565b5b600101612e07565b5b50919050565b600160a060020a0381166000908152600160205260409020545b919050565b60065433600160a060020a03908116911614612e8957610000565b600160a060020a03301660009081526001602052604080822080548354038355829055517fe0987873419fe09d3c9a3e0267f4daf163e812d512f867abaf6bf9822f141a8b9190a15b5b565b60408051602080820183526000825260198054845160026001831615610100026000190190921691909104601f81018490048402820184019095528481529293909183018282801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b505050505090505b90565b6011545b90565b600f805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610da45780601f10610d7957610100808354040283529160200191610da4565b820191906000526020600020905b815481529060010190602001808311610d8757829003601f168201915b505050505081565b600060208251111561301957610000565b5060208101515b919050565b6000601882815481101561000057906000526020600020906007020160005b505490505b919050565b635876c70042111561305f57610000565b73342e62732b76875da9305083ea8ae63125a4e667600160a060020a0333161461308857610000565b600160a060020a0382166000908152600a602052604090208190555b5050565b600160a060020a0333166000908152600160205260408120548290108015906130d15750600082115b1561314557600160a060020a03338116600081815260016020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610e11565b506000610e11565b5b92915050565b600160a060020a0333166000908152600a6020526040902054151561317857610000565b6007546040805160006020918201819052825160e160020a636a4425ab0281529251600160a060020a039094169363d4884b569360048082019493918390030190829087803b156100005760325a03f11561000057505060405151626ebe000142101590506131e657610000565b601b54158015906132005750426019600201546212750001115b1561320a57610000565b60806040519081016040528083815260200182600160a060020a031681526020014262127500018152602001600a600033600160a060020a0316600160a060020a031681526020019081526020016000205481525060196000820151816000019080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106132b357805160ff19168380011785556132e0565b828001600101855582156132e0579182015b828111156132e05782518255916020019190600101906132c5565b5b506133019291505b80821115611c0f5760008155600101611bfb565b5090565b505060208281015160018381018054600160a060020a031916600160a060020a039384161790556040808601516002860155606095860151600390950194909455338083166000818152601d8652869020805460ff1916909317909255845191825242621275000194820185905291861694810194909452608084830181815287519186019190915286517f854a9cc4d907d23cd8dcc72af48dc0e6a87e6f76376a309a0ffa3231ce8e13369592948894909388939092909160a08401919087019080838382156133ed575b8051825260208311156133ed57601f1990920191602091820191016133cd565b505050905090810190601f1680156134195780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a15b5050565b60065433600160a060020a0390811691161461344957610000565b600b819055600080546011546040519192909184917f17a7f53ef43da32c3936b4ac2b060caff5c4b03cd24b1c8e96a191eb1ec48d1591a45b5b50565b600954604080516000602091820181905282517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0330811660048301529351919493909316926370a0823192602480830193919282900301818787803b156100005760325a03f115610000575050604051519150505b90565b6000545b90565b600c545b90565b600160a060020a0381166000908152600a60205260409020545b919050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b635876c70042111561357357610000565b73342e62732b76875da9305083ea8ae63125a4e667600160a060020a0333161461359c57610000565b600160a060020a03821660009081526001602052604090208190555b50505600a165627a7a723058209e2efb647affe4b121be69dfe47f519312f512075279019ffe2fb874a2ae95880029

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

0000000000000000000000001c3c643f49be262c3040e917e7d2299b9bc081a100000000000000000000000014f37b574242d366558db61f3335289a5035c506000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000008657468657269736300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035253430000000000000000000000000000000000000000000000000000000000

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

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


Swarm Source

bzzr://9e2efb647affe4b121be69dfe47f519312f512075279019ffe2fb874a2ae9588
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.