ETH Price: $3,013.49 (+1.25%)
 

Overview

ETH Balance

0.253733333333333337 ETH

Eth Value

$764.62 (@ $3,013.49/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy Booster Pack150935632022-07-07 5:36:231294 days ago1657172183IN
0x1f28211c...22599526C
0.001 ETH0.0013004812.55556218
Transfer150524472022-06-30 20:52:241301 days ago1656622344IN
0x1f28211c...22599526C
0 ETH0.0008896939.67088588
Buy Booster Pack140159412022-01-16 10:20:321466 days ago1642328432IN
0x1f28211c...22599526C
0.08 ETH0.08223911124.93522586
Buy Booster Pack140158892022-01-16 10:08:281466 days ago1642327708IN
0x1f28211c...22599526C
0.008 ETH0.05048467115.04223967
Buy Booster Pack140156052022-01-16 9:02:551466 days ago1642323775IN
0x1f28211c...22599526C
0.008 ETH0.04759798112.86204948
Buy Booster Pack140155862022-01-16 8:58:561466 days ago1642323536IN
0x1f28211c...22599526C
0.008 ETH0.05317551132.33139606
Buy Booster Pack140154862022-01-16 8:37:291466 days ago1642322249IN
0x1f28211c...22599526C
0.004 ETH0.02377771103.31892916
Buy Booster Pack140154822022-01-16 8:36:261466 days ago1642322186IN
0x1f28211c...22599526C
0.004 ETH0.02257585100.3371228
Buy Booster Pack140154612022-01-16 8:31:061466 days ago1642321866IN
0x1f28211c...22599526C
0.004 ETH0.02567616103.85160454
Buy Booster Pack140153752022-01-16 8:10:221466 days ago1642320622IN
0x1f28211c...22599526C
0.004 ETH0.02414513104.91544461
Buy Booster Pack140153432022-01-16 8:04:511466 days ago1642320291IN
0x1f28211c...22599526C
0.0004 ETH0.00297109113.66513267
Buy Booster Pack140153232022-01-16 7:59:561466 days ago1642319996IN
0x1f28211c...22599526C
0.004 ETH0.03056495123.62515357
Buy Booster Pack133062192021-09-27 6:23:441577 days ago1632723824IN
0x1f28211c...22599526C
0.0004 ETH0.0012697648.57741983
Buy Booster Pack133062192021-09-27 6:23:441577 days ago1632723824IN
0x1f28211c...22599526C
0.0004 ETH0.0012697648.57741983
Buy Booster Pack133062192021-09-27 6:23:441577 days ago1632723824IN
0x1f28211c...22599526C
0.0004 ETH0.0012697648.57741983
Buy Booster Pack133062192021-09-27 6:23:441577 days ago1632723824IN
0x1f28211c...22599526C
0.0004 ETH0.0012697648.57741983
Buy Booster Pack133062192021-09-27 6:23:441577 days ago1632723824IN
0x1f28211c...22599526C
0.0004 ETH0.0012697648.57741983
Buy Booster Pack133062192021-09-27 6:23:441577 days ago1632723824IN
0x1f28211c...22599526C
0.0004 ETH0.0012697648.57741983
Buy Booster Pack133062192021-09-27 6:23:441577 days ago1632723824IN
0x1f28211c...22599526C
0.0004 ETH0.0012697648.57741983
Buy Booster Pack133062152021-09-27 6:23:011577 days ago1632723781IN
0x1f28211c...22599526C
0.0004 ETH0.0012773648.86812547
Buy Booster Pack133062152021-09-27 6:23:011577 days ago1632723781IN
0x1f28211c...22599526C
0.0004 ETH0.0012773648.86812547
Buy Booster Pack133062062021-09-27 6:21:261577 days ago1632723686IN
0x1f28211c...22599526C
0.0004 ETH0.0014067653.81881246
Claim131341612021-08-31 15:40:541604 days ago1630424454IN
0x1f28211c...22599526C
0 ETH0.00242966102.5739173
Claim61714642018-08-18 20:16:582713 days ago1534623418IN
0x1f28211c...22599526C
0 ETH0.00008542
Claim58708372018-06-28 19:52:502764 days ago1530215570IN
0x1f28211c...22599526C
0 ETH0.00004271
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer61714642018-08-18 20:16:582713 days ago1534623418
0x1f28211c...22599526C
0.00027777 ETH
Transfer58708372018-06-28 19:52:502764 days ago1530215570
0x1f28211c...22599526C
0.00027777 ETH
Transfer55832942018-05-09 11:29:072814 days ago1525865347
0x1f28211c...22599526C
0.02625 ETH
Transfer55742992018-05-07 21:49:152816 days ago1525729755
0x1f28211c...22599526C
0.01930555 ETH
Transfer55742032018-05-07 21:26:462816 days ago1525728406
0x1f28211c...22599526C
0.01930555 ETH
Transfer55740212018-05-07 20:44:152816 days ago1525725855
0x1f28211c...22599526C
0.05208333 ETH
Transfer55353282018-05-01 2:04:232823 days ago1525140263
0x1f28211c...22599526C
0.09347222 ETH
Transfer55351152018-05-01 1:13:322823 days ago1525137212
0x1f28211c...22599526C
0.23138888 ETH
Transfer55347702018-04-30 23:32:262823 days ago1525131146
0x1f28211c...22599526C
1.30861111 ETH
Transfer55314462018-04-30 9:44:402823 days ago1525081480
0x1f28211c...22599526C
0.09347222 ETH
Transfer55187072018-04-28 4:38:112825 days ago1524890291
0x1f28211c...22599526C
0.07694444 ETH
Transfer55178092018-04-28 0:54:102826 days ago1524876850
0x1f28211c...22599526C
0.00805555 ETH
Transfer55164412018-04-27 19:18:462826 days ago1524856726
0x1f28211c...22599526C
0.02055555 ETH
Transfer55039702018-04-25 15:21:112828 days ago1524669671
0x1f28211c...22599526C
0.08166666 ETH
Transfer54695992018-04-19 17:39:062834 days ago1524159546
0x1f28211c...22599526C
0.37722222 ETH
Transfer54661642018-04-19 3:11:062835 days ago1524107466
0x1f28211c...22599526C
0.02305555 ETH
Transfer54519652018-04-16 16:53:112837 days ago1523897591
0x1f28211c...22599526C
0.02416666 ETH
Transfer54369152018-04-14 3:47:222840 days ago1523677642
0x1f28211c...22599526C
0.05611111 ETH
Transfer54351072018-04-13 20:37:332840 days ago1523651853
0x1f28211c...22599526C
0.00222222 ETH
Transfer54170002018-04-10 19:21:402843 days ago1523388100
0x1f28211c...22599526C
0.03138888 ETH
Transfer54109752018-04-09 19:31:312844 days ago1523302291
0x1f28211c...22599526C
0.02083333 ETH
Transfer54098142018-04-09 15:01:222844 days ago1523286082
0x1f28211c...22599526C
0.04194444 ETH
Transfer54096982018-04-09 14:34:232844 days ago1523284463
0x1f28211c...22599526C
0.49194444 ETH
Transfer53861312018-04-05 17:02:432848 days ago1522947763
0x1f28211c...22599526C
0.00861111 ETH
Transfer53700872018-04-03 0:40:372851 days ago1522716037
0x1f28211c...22599526C
0.01527777 ETH
View All Internal Transactions
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CorsariumCore

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-29
*/

pragma solidity ^0.4.13;

contract SplitPayment {
  using SafeMath for uint256;

  uint256 public totalShares = 0;
  uint256 public totalReleased = 0;

  mapping(address => uint256) public shares;
  mapping(address => uint256) public released;
  address[] public payees;

  /**
   * @dev Constructor
   */
  function SplitPayment(address[] _payees, uint256[] _shares) public payable {
    require(_payees.length == _shares.length);

    for (uint256 i = 0; i < _payees.length; i++) {
      addPayee(_payees[i], _shares[i]);
    }
  }

  /**
   * @dev payable fallback
   */
  function () public payable {}

  /**
   * @dev Claim your share of the balance.
   */
  function claim() public {
    address payee = msg.sender;

    require(shares[payee] > 0);

    uint256 totalReceived = this.balance.add(totalReleased);
    uint256 payment = totalReceived.mul(shares[payee]).div(totalShares).sub(released[payee]);

    require(payment != 0);
    require(this.balance >= payment);

    released[payee] = released[payee].add(payment);
    totalReleased = totalReleased.add(payment);

    payee.transfer(payment);
  }

  /**
   * @dev Add a new payee to the contract.
   * @param _payee The address of the payee to add.
   * @param _shares The number of shares owned by the payee.
   */
  function addPayee(address _payee, uint256 _shares) internal {
    require(_payee != address(0));
    require(_shares > 0);
    require(shares[_payee] == 0);

    payees.push(_payee);
    shares[_payee] = _shares;
    totalShares = totalShares.add(_shares);
  }
}

interface ERC721Metadata /* is ERC721 */ {
    /// @notice A descriptive name for a collection of NFTs in this contract
    function name() external pure returns (string _name);

    /// @notice An abbreviated name for NFTs in this contract
    function symbol() external pure returns (string _symbol);

    /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
    /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
    ///  3986. The URI may point to a JSON file that conforms to the "ERC721
    ///  Metadata JSON Schema".
    function tokenURI(uint256 _tokenId) external view returns (string);
}

library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

interface ERC721 /* is ERC165 */ {
    /// @dev This emits when ownership of any NFT changes by any mechanism.
    ///  This event emits when NFTs are created (`from` == 0) and destroyed
    ///  (`to` == 0). Exception: during contract creation, any number of NFTs
    ///  may be created and assigned without emitting Transfer. At the time of
    ///  any transfer, the approved address for that NFT (if any) is reset to none.
    event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);

    /// @dev This emits when the approved address for an NFT is changed or
    ///  reaffirmed. The zero address indicates there is no approved address.
    ///  When a Transfer event emits, this also indicates that the approved
    ///  address for that NFT (if any) is reset to none.
    event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

    /// @dev This emits when an operator is enabled or disabled for an owner.
    ///  The operator can manage all NFTs of the owner.
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    /// @notice Count all NFTs assigned to an owner
    /// @dev NFTs assigned to the zero address are considered invalid, and this
    ///  function throws for queries about the zero address.
    /// @param _owner An address for whom to query the balance
    /// @return The number of NFTs owned by `_owner`, possibly zero
    function balanceOf(address _owner) external view returns (uint256);

    /// @notice Find the owner of an NFT
    /// @param _tokenId The identifier for an NFT
    /// @dev NFTs assigned to zero address are considered invalid, and queries
    ///  about them do throw.
    /// @return The address of the owner of the NFT
    function ownerOf(uint256 _tokenId) external view returns (address);

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT. When transfer is complete, this function
    ///  checks if `_to` is a smart contract (code size > 0). If so, it calls
    ///  `onERC721Received` on `_to` and throws if the return value is not
    ///  `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    /// @param data Additional data with no specified format, sent in call to `_to`
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
	
    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev This works identically to the other function with an extra data parameter,
    ///  except this function just sets data to ""
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;

    /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
    ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
    ///  THEY MAY BE PERMANENTLY LOST
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable;

    /// @notice Set or reaffirm the approved address for an NFT
    /// @dev The zero address indicates there is no approved address.
    /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
    ///  operator of the current owner.
    /// @param _approved The new approved NFT controller
    /// @param _tokenId The NFT to approve
    function approve(address _approved, uint256 _tokenId) external payable;

    /// @notice Enable or disable approval for a third party ("operator") to manage
    ///  all your assets.
    /// @dev Throws unless `msg.sender` is the current NFT owner.
    /// @dev Emits the ApprovalForAll event
    /// @param _operator Address to add to the set of authorized operators.
    /// @param _approved True if the operators is approved, false to revoke approval
    function setApprovalForAll(address _operator, bool _approved) external;

    /// @notice Get the approved address for a single NFT
    /// @dev Throws if `_tokenId` is not a valid NFT
    /// @param _tokenId The NFT to find the approved address for
    /// @return The approved address for this NFT, or the zero address if there is none
    function getApproved(uint256 _tokenId) external view returns (address);

    /// @notice Query if an address is an authorized operator for another address
    /// @param _owner The address that owns the NFTs
    /// @param _operator The address that acts on behalf of the owner
    /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}

contract CorsariumAccessControl is SplitPayment {
//contract CorsariumAccessControl {
   
    event ContractUpgrade(address newContract);

    // The addresses of the accounts (or contracts) that can execute actions within each roles.
    address public megoAddress = 0x4ab6C984E72CbaB4162429721839d72B188010E3;
    address public publisherAddress = 0x00C0bCa70EAaADF21A158141EC7eA699a17D63ed;
    // cat, rene, pablo,  cristean, chulini, pablo, david, mego
    address[] public teamAddresses = [0x4978FaF663A3F1A6c74ACCCCBd63294Efec64624, 0x772009E69B051879E1a5255D9af00723df9A6E04, 0xA464b05832a72a1a47Ace2Be18635E3a4c9a240A, 0xd450fCBfbB75CDAeB65693849A6EFF0c2976026F, 0xd129BBF705dC91F50C5d9B44749507f458a733C8, 0xfDC2ad68fd1EF5341a442d0E2fC8b974E273AC16, 0x4ab6C984E72CbaB4162429721839d72B188010E3];
    // todo: add addresses of creators

    // @dev Keeps track whether the contract is paused. When that is true, most actions are blocked
    bool public paused = false;

    modifier onlyTeam() {
        require(msg.sender == teamAddresses[0] || msg.sender == teamAddresses[1] || msg.sender == teamAddresses[2] || msg.sender == teamAddresses[3] || msg.sender == teamAddresses[4] || msg.sender == teamAddresses[5] || msg.sender == teamAddresses[6] || msg.sender == teamAddresses[7]);
        _; // do the rest
    }

    modifier onlyPublisher() {
        require(msg.sender == publisherAddress);
        _;
    }

    modifier onlyMEGO() {
        require(msg.sender == megoAddress);
        _;
    }

    /*** Pausable functionality adapted from OpenZeppelin ***/

    /// @dev Modifier to allow actions only when the contract IS NOT paused
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /// @dev Modifier to allow actions only when the contract IS paused
    modifier whenPaused {
        require(paused);
        _;
    }

    function CorsariumAccessControl() public {
        megoAddress = msg.sender;
    }

    /// @dev Called by any team member to pause the contract. Used only when
    ///  a bug or exploit is detected and we need to limit damage.
    function pause() external onlyTeam whenNotPaused {
        paused = true;
    }

    /// @dev Unpauses the smart contract. Can only be called by MEGO, since
    ///  one reason we may pause the contract is when team accounts are
    ///  compromised.
    /// @notice This is public rather than external so it can be called by
    ///  derived contracts.
    function unpause() public onlyMEGO whenPaused {
        // can't unpause if contract was upgraded
        paused = false;
    }

}

contract CardBase is CorsariumAccessControl, ERC721, ERC721Metadata {

    /*** EVENTS ***/

    /// @dev The Print event is fired whenever a new card comes into existence.
    event Print(address owner, uint256 cardId);
    
    uint256 lastPrintedCard = 0;
     
    mapping (uint256 => address) public tokenIdToOwner;  // 721 tokenIdToOwner
    mapping (address => uint256) public ownerTokenCount; // 721 ownerTokenCount
    mapping (uint256 => address) public tokenIdToApproved; // 721 tokenIdToApprovedAddress
    mapping (uint256 => uint256) public tokenToCardIndex; // 721 tokenIdToMetadata
    //mapping (uint256 => uint256) public tokenCountIndex;
    //mapping (address => uint256[]) internal ownerToTokensOwned;
    //mapping (uint256 => uint256) internal tokenIdToOwnerArrayIndex;

    /// @dev Assigns ownership of a specific card to an address.
    /*function _transfer(address _from, address _to, uint256 _tokenId) internal {
      
        ownershipTokenCount[_to]++;
        // transfer ownership
        cardIndexToOwner[_tokenId] = _to;
       
        // Emit the transfer event.
        Transfer(_from, _to, _tokenId);
        
    }*/
    
    function _createCard(uint256 _prototypeId, address _owner) internal returns (uint) {

        // This will assign ownership, and also emit the Transfer event as
        // per ERC721 draft
        require(uint256(1000000) > lastPrintedCard);
        lastPrintedCard++;
        tokenToCardIndex[lastPrintedCard] = _prototypeId;
        _setTokenOwner(lastPrintedCard, _owner);
        //_addTokenToOwnersList(_owner, lastPrintedCard);
        Transfer(0, _owner, lastPrintedCard);
        //tokenCountIndex[_prototypeId]++;
        
        //_transfer(0, _owner, lastPrintedCard); //<-- asd
        

        return lastPrintedCard;
    }

    function _clearApprovalAndTransfer(address _from, address _to, uint _tokenId) internal {
        _clearTokenApproval(_tokenId);
        //_removeTokenFromOwnersList(_from, _tokenId);
        ownerTokenCount[_from]--;
        _setTokenOwner(_tokenId, _to);
        //_addTokenToOwnersList(_to, _tokenId);
    }

    function _ownerOf(uint _tokenId) internal view returns (address _owner) {
        return tokenIdToOwner[_tokenId];
    }

    function _approve(address _to, uint _tokenId) internal {
        tokenIdToApproved[_tokenId] = _to;
    }

    function _getApproved(uint _tokenId) internal view returns (address _approved) {
        return tokenIdToApproved[_tokenId];
    }

    function _clearTokenApproval(uint _tokenId) internal {
        tokenIdToApproved[_tokenId] = address(0);
    }

    function _setTokenOwner(uint _tokenId, address _owner) internal {
        tokenIdToOwner[_tokenId] = _owner;
        ownerTokenCount[_owner]++;
    }

}

contract CardOwnership is CardBase {
    /// @notice Count all NFTs assigned to an owner
    /// @dev NFTs assigned to the zero address are considered invalid, and this
    ///  function throws for queries about the zero address.
    /// @param _owner An address for whom to query the balance
    /// @return The number of NFTs owned by `_owner`, possibly zero
    function balanceOf(address _owner) external view returns (uint256) {
        require(_owner != address(0));
        return ownerTokenCount[_owner];
    }

    /// @notice Find the owner of an NFT
    /// @param _tokenId The identifier for an NFT
    /// @dev NFTs assigned to zero address are considered invalid, and queries
    ///  about them do throw.
    /// @return The address of the owner of the NFT
    function ownerOf(uint256 _tokenId) external view returns (address _owner) {
        _owner = tokenIdToOwner[_tokenId];
        require(_owner != address(0));
    }

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT. When transfer is complete, this function
    ///  checks if `_to` is a smart contract (code size > 0). If so, it calls
    ///  `onERC721Received` on `_to` and throws if the return value is not
    ///  `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    /// @param data Additional data with no specified format, sent in call to `_to`
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable {
        require(_getApproved(_tokenId) == msg.sender);
        require(_ownerOf(_tokenId) == _from);
        require(_to != address(0));

        _clearApprovalAndTransfer(_from, _to, _tokenId);

        Approval(_from, 0, _tokenId);
        Transfer(_from, _to, _tokenId);

        if (isContract(_to)) {
            bytes4 value = ERC721TokenReceiver(_to).onERC721Received(_from, _tokenId, data);

            if (value != bytes4(keccak256("onERC721Received(address,uint256,bytes)"))) {
                revert();
            }
        }
    }
	
    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev This works identically to the other function with an extra data parameter,
    ///  except this function just sets data to ""
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable {
        require(_getApproved(_tokenId) == msg.sender);
        require(_ownerOf(_tokenId) == _from);
        require(_to != address(0));

        _clearApprovalAndTransfer(_from, _to, _tokenId);

        Approval(_from, 0, _tokenId);
        Transfer(_from, _to, _tokenId);

        if (isContract(_to)) {
            bytes4 value = ERC721TokenReceiver(_to).onERC721Received(_from, _tokenId, "");

            if (value != bytes4(keccak256("onERC721Received(address,uint256,bytes)"))) {
                revert();
            }
        }
    }

    /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
    ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
    ///  THEY MAY BE PERMANENTLY LOST
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable {
        require(_getApproved(_tokenId) == msg.sender);
        require(_ownerOf(_tokenId) == _from);
        require(_to != address(0));

        _clearApprovalAndTransfer(_from, _to, _tokenId);

        Approval(_from, 0, _tokenId);
        Transfer(_from, _to, _tokenId);
    }

    /// @notice Set or reaffirm the approved address for an NFT
    /// @dev The zero address indicates there is no approved address.
    /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
    ///  operator of the current owner.
    /// @param _approved The new approved NFT controller
    /// @param _tokenId The NFT to approve
    function approve(address _approved, uint256 _tokenId) external payable {
        require(msg.sender == _ownerOf(_tokenId));
        require(msg.sender != _approved);
        
        if (_getApproved(_tokenId) != address(0) || _approved != address(0)) {
            _approve(_approved, _tokenId);
            Approval(msg.sender, _approved, _tokenId);
        }
    }

    /// @notice Enable or disable approval for a third party ("operator") to manage
    ///  all your assets.
    /// @dev Throws unless `msg.sender` is the current NFT owner.
    /// @dev Emits the ApprovalForAll event
    /// @param _operator Address to add to the set of authorized operators.
    /// @param _approved True if the operators is approved, false to revoke approval
    function setApprovalForAll(address _operator, bool _approved) external {
        revert();
    }

    /// @notice Get the approved address for a single NFT
    /// @dev Throws if `_tokenId` is not a valid NFT
    /// @param _tokenId The NFT to find the approved address for
    /// @return The approved address for this NFT, or the zero address if there is none
    function getApproved(uint256 _tokenId) external view returns (address) {
        return _getApproved(_tokenId);
    }

    /// @notice Query if an address is an authorized operator for another address
    /// @param _owner The address that owns the NFTs
    /// @param _operator The address that acts on behalf of the owner
    /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
    function isApprovedForAll(address _owner, address _operator) external view returns (bool) {
        return _owner == _operator;
    }

    /// @notice A descriptive name for a collection of NFTs in this contract
    function name() external pure returns (string _name) {
        return "Dark Winds First Edition Cards";
    }

    /// @notice An abbreviated name for NFTs in this contract
    function symbol() external pure returns (string _symbol) {
        return "DW1ST";
    }

    /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
    /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
    ///  3986. The URI may point to a JSON file that conforms to the "ERC721
    ///  Metadata JSON Schema".
    function tokenURI(uint256 _tokenId) external view returns (string _tokenURI) {
        _tokenURI = "https://corsarium.playdarkwinds.com/cards/00000.json"; //37 36 35 34 33
        bytes memory tokenUriBytes = bytes(_tokenURI);
        tokenUriBytes[33] = byte(48 + (tokenToCardIndex[_tokenId] / 10000) % 10);
        tokenUriBytes[34] = byte(48 + (tokenToCardIndex[_tokenId] / 1000) % 10);
        tokenUriBytes[35] = byte(48 + (tokenToCardIndex[_tokenId] / 100) % 10);
        tokenUriBytes[36] = byte(48 + (tokenToCardIndex[_tokenId] / 10) % 10);
        tokenUriBytes[37] = byte(48 + (tokenToCardIndex[_tokenId] / 1) % 10);
    }

    function totalSupply() public view returns (uint256 _total) {
        _total = lastPrintedCard;
    }

    function isContract(address _addr) internal view returns (bool) {
        uint256 size;
        assembly { 
            size := extcodesize(_addr)
        }
        return size > 0;
    }
}

contract CorsariumCore is CardOwnership {

    uint256 nonce = 1;
    uint256 public cardCost = 1 finney;

    function CorsariumCore(address[] _payees, uint256[] _shares) SplitPayment(_payees, _shares) public {

    }

    // payable fallback
    function () public payable {}

    function changeCardCost(uint256 _newCost) onlyTeam public {
        cardCost = _newCost;
    }

    function getCard(uint _token_id) public view returns (uint256) {
        assert(_token_id <= lastPrintedCard);
        return tokenToCardIndex[_token_id];
    }

    function buyBoosterPack() public payable {
        uint amount = msg.value/cardCost;
        uint blockNumber = block.timestamp;
        for (uint i = 0; i < amount; i++) {
            _createCard(i%5 == 1 ? (uint256(keccak256(i+nonce+blockNumber)) % 50) : (uint256(keccak256(i+nonce+blockNumber)) % 50) + (nonce%50), msg.sender);
        }
        nonce += amount;

    }
    
    function cardsOfOwner(address _owner) external view returns (uint256[] ownerCards) {
        uint256 tokenCount = ownerTokenCount[_owner];

        if (tokenCount == 0) {
            // Return an empty array
            return new uint256[](0);
        } else {
            uint256[] memory result = new uint256[](tokenCount);
            uint256 resultIndex = 0;

            // We count on the fact that all cards have IDs starting at 1 and increasing
            // sequentially up to the totalCards count.
            uint256 cardId;

            for (cardId = 1; cardId <= lastPrintedCard; cardId++) {
                if (tokenIdToOwner[cardId] == _owner) {
                    result[resultIndex] = cardId;
                    resultIndex++;
                }
            }

            return result;
        }
    }

    function tokensOfOwner(address _owner) external view returns (uint256[] ownerCards) {
        uint256 tokenCount = ownerTokenCount[_owner];

        if (tokenCount == 0) {
            // Return an empty array
            return new uint256[](0);
        } else {
            uint256[] memory result = new uint256[](tokenCount);
            uint256 resultIndex = 0;

            // We count on the fact that all cards have IDs starting at 1 and increasing
            // sequentially up to the totalCards count.
            uint256 cardId;

            for (cardId = 1; cardId <= lastPrintedCard; cardId++) {
                if (tokenIdToOwner[cardId] == _owner) {
                    result[resultIndex] = cardId;
                    resultIndex++;
                }
            }

            return result;
        }
    }

    function cardSupply() external view returns (uint256[] printedCards) {

        if (totalSupply() == 0) {
            // Return an empty array
            return new uint256[](0);
        } else {
            uint256[] memory result = new uint256[](100);
            //uint256 totalCards = 1000000;
            //uint256 resultIndex = 0;

            // We count on the fact that all cards have IDs starting at 1 and increasing
            // sequentially up to 1000000
            uint256 cardId;

            for (cardId = 1; cardId < 1000000; cardId++) {
                result[tokenToCardIndex[cardId]]++;
                //resultIndex++;
            }

            return result;
        }
    }
    
}

interface ERC721TokenReceiver {
    /// @notice Handle the receipt of an NFT
    /// @dev The ERC721 smart contract calls this function on the recipient
    ///  after a `transfer`. This function MAY throw to revert and reject the
    ///  transfer. This function MUST use 50,000 gas or less. Return of other
    ///  than the magic value MUST result in the transaction being reverted.
    ///  Note: the contract address is always the message sender.
    /// @param _from The sending address 
    /// @param _tokenId The NFT identifier which is being transfered
    /// @param data Additional data with no specified format
    /// @return `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`
    ///  unless throwing
	function onERC721Received(address _from, uint256 _tokenId, bytes data) external returns(bytes4);
}

interface ERC165 {
    /// @notice Query if a contract implements an interface
    /// @param interfaceID The interface identifier, as specified in ERC-165
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    /// @return `true` if the contract implements `interfaceID` and
    ///  `interfaceID` is not 0xffffffff, `false` otherwise
    function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_approved","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"_total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCost","type":"uint256"}],"name":"changeCardCost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"teamAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"publisherAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalShares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"cardsOfOwner","outputs":[{"name":"ownerCards","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"payees","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenIdToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cardSupply","outputs":[{"name":"printedCards","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"ownerCards","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_token_id","type":"uint256"}],"name":"getCard","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"released","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"},{"name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buyBoosterPack","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownerTokenCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"_tokenURI","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"shares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"megoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalReleased","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cardCost","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenIdToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenToCardIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_payees","type":"address[]"},{"name":"_shares","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"cardId","type":"uint256"}],"name":"Print","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContract","type":"address"}],"name":"ContractUpgrade","type":"event"}]

6060604052600080556000600155734ab6c984e72cbab4162429721839d72b188010e3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555072c0bca70eaaadf21a158141ec7ea699a17d63ed600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e060405190810160405280734978faf663a3f1a6c74accccbd63294efec6462473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173772009e69b051879e1a5255d9af00723df9a6e0473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a464b05832a72a1a47ace2be18635e3a4c9a240a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d450fcbfbb75cdaeb65693849a6eff0c2976026f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d129bbf705dc91f50c5d9b44749507f458a733c873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fdc2ad68fd1ef5341a442d0e2fc8b974e273ac1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734ab6c984e72cbab4162429721839d72b188010e373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506007906007620002bc92919062000581565b506000600860006101000a81548160ff02191690831515021790555060006009556001600e5566038d7ea4c68000600f553415620002f957600080fd5b60405162003800380380620038008339810160405280805182019190602001805182019190505081816000815183511415156200033557600080fd5b600090505b8251811015620003a2576200039483828151811015156200035757fe5b9060200190602002015183838151811015156200037057fe5b90602001906020020151620003ee6401000000000262002f67176401000000009004565b80806001019150506200033a565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620006ad565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200042b57600080fd5b6000811115156200043b57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415156200048a57600080fd5b60048054806001018281620004a0919062000610565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200055881600054620005626401000000000262002cf9179091906401000000009004565b6000819055505050565b60008082840190508381101515156200057757fe5b8091505092915050565b828054828255906000526020600020908101928215620005fd579160200282015b82811115620005fc5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620005a2565b5b5090506200060c91906200063f565b5090565b8154818355818115116200063a5781836000526020600020918201910162000639919062000685565b5b505050565b6200068291905b808211156200067e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000646565b5090565b90565b620006aa91905b80821115620006a65760008160009055506001016200068c565b5090565b90565b61314380620006bd6000396000f3006060604052600436106101c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101c4578063081812fc14610252578063095ea7b3146102b557806318160ddd146102ec57806320e07e7f1461031557806323b872dd146103385780632419217e1461038e57806336516a8a146103f15780633a98ef39146104465780633d8807f81461046f5780633f4ba83a146104fd57806342842e0e146105125780634e71d92d146105685780635c975abb1461057d57806363037b0c146105aa5780636352211e1461060d5780636e9e48ef1461067057806370a08231146106d35780637c97479b146107205780638456cb591461078a5780638462151c1461079f5780639188d3121461082d57806395d89b41146108645780639852595c146108f2578063a22cb4651461093f578063a3006abf14610983578063b88d4fde1461098d578063c2fb09a8146109f7578063c87b56dd14610a44578063ce7c2ac214610ae0578063e1479d0714610b2d578063e33b7de314610b82578063e58172b114610bab578063e985e9c514610bd4578063eb5653d714610c44578063fd2546ac14610ca7575b005b34156101cf57600080fd5b6101d7610cde565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102175780820151818401526020810190506101fc565b50505050905090810190601f1680156102445780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025d57600080fd5b6102736004808035906020019091905050610d21565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ea600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d33565b005b34156102f757600080fd5b6102ff610e9a565b6040518082815260200191505060405180910390f35b341561032057600080fd5b6103366004808035906020019091905050610ea4565b005b61038c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611239565b005b341561039957600080fd5b6103af60048080359060200190919050506113be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103fc57600080fd5b6104046113fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045157600080fd5b610459611423565b6040518082815260200191505060405180910390f35b341561047a57600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611429565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104e95780820151818401526020810190506104ce565b505050509050019250505060405180910390f35b341561050857600080fd5b61051061158c565b005b610566600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611620565b005b341561057357600080fd5b61057b61192d565b005b341561058857600080fd5b610590611b95565b604051808215151515815260200191505060405180910390f35b34156105b557600080fd5b6105cb6004808035906020019091905050611ba8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061857600080fd5b61062e6004808035906020019091905050611be7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067b57600080fd5b6106916004808035906020019091905050611c60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106de57600080fd5b61070a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611c93565b6040518082815260200191505060405180910390f35b341561072b57600080fd5b610733611d17565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077657808201518184015260208101905061075b565b505050509050019250505060405180910390f35b341561079557600080fd5b61079d611ddd565b005b34156107aa57600080fd5b6107d6600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506121a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108195780820151818401526020810190506107fe565b505050509050019250505060405180910390f35b341561083857600080fd5b61084e6004808035906020019091905050612304565b6040518082815260200191505060405180910390f35b341561086f57600080fd5b61087761232f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108b757808201518184015260208101905061089c565b50505050905090810190601f1680156108e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108fd57600080fd5b610929600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612372565b6040518082815260200191505060405180910390f35b341561094a57600080fd5b610981600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035151590602001909190505061238a565b005b61098b61238f565b005b6109f5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080359060200190820180359060200191909192905050612462565b005b3415610a0257600080fd5b610a2e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061277f565b6040518082815260200191505060405180910390f35b3415610a4f57600080fd5b610a656004808035906020019091905050612797565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aa5578082015181840152602081019050610a8a565b50505050905090810190601f168015610ad25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610aeb57600080fd5b610b17600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612ae0565b6040518082815260200191505060405180910390f35b3415610b3857600080fd5b610b40612af8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b8d57600080fd5b610b95612b1e565b6040518082815260200191505060405180910390f35b3415610bb657600080fd5b610bbe612b24565b6040518082815260200191505060405180910390f35b3415610bdf57600080fd5b610c2a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b2a565b604051808215151515815260200191505060405180910390f35b3415610c4f57600080fd5b610c656004808035906020019091905050612b63565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610cb257600080fd5b610cc86004808035906020019091905050612b96565b6040518082815260200191505060405180910390f35b610ce6612f2b565b6040805190810160405280601e81526020017f4461726b2057696e64732046697273742045646974696f6e2043617264730000815250905090565b6000610d2c82612bae565b9050919050565b610d3c81612beb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d7557600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610db057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16610dd182612bae565b73ffffffffffffffffffffffffffffffffffffffff16141580610e215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15610e9657610e308282612c28565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b6000600954905090565b60076000815481101515610eb457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f7f575060076001815481101515610f2457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610ff0575060076002815481101515610f9557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061106157506007600381548110151561100657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806110d257506007600481548110151561107757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806111435750600760058154811015156110e857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806111b457506007600681548110151561115957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061122457506007808154811015156111c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561122f57600080fd5b80600f8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1661125982612bae565b73ffffffffffffffffffffffffffffffffffffffff1614151561127b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1661129b82612beb565b73ffffffffffffffffffffffffffffffffffffffff161415156112bd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156112f957600080fd5b611304838383612c7e565b60008373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6007818154811015156113cd57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b611431612f3f565b600061143b612f3f565b600080600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054935060008414156114b05760006040518059106114985750595b90808252806020026020018201604052509450611583565b836040518059106114be5750595b9080825280602002602001820160405250925060009150600190505b6009548111151561157f578573ffffffffffffffffffffffffffffffffffffffff16600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115725780838381518110151561155b57fe5b906020019060200201818152505081806001019250505b80806001019150506114da565b8294505b50505050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115e857600080fd5b600860009054906101000a900460ff16151561160357600080fd5b6000600860006101000a81548160ff021916908315150217905550565b60003373ffffffffffffffffffffffffffffffffffffffff1661164283612bae565b73ffffffffffffffffffffffffffffffffffffffff1614151561166457600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1661168483612beb565b73ffffffffffffffffffffffffffffffffffffffff161415156116a657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156116e257600080fd5b6116ed848484612c7e565b60008473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36117ab83612ce6565b15611927578273ffffffffffffffffffffffffffffffffffffffff1663f0b9e5ba85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001806020018281038252600081526020016020019350505050602060405180830381600087803b151561186657600080fd5b5af1151561187357600080fd5b50505060405180519050905060405180807f6f6e455243373231526563656976656428616464726573732c75696e7432353681526020017f2c62797465732900000000000000000000000000000000000000000000000000815250602701905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561192657600080fd5b5b50505050565b60008060003392506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561198357600080fd5b6119af6001543073ffffffffffffffffffffffffffffffffffffffff1631612cf990919063ffffffff16565b9150611a68600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a5a600054611a4c600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487612d1790919063ffffffff16565b612d5290919063ffffffff16565b612d6d90919063ffffffff16565b905060008114151515611a7a57600080fd5b803073ffffffffffffffffffffffffffffffffffffffff163110151515611aa057600080fd5b611af281600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cf990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b4a81600154612cf990919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611b9057600080fd5b505050565b600860009054906101000a900460ff1681565b600481815481101515611bb757fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611c5b57600080fd5b919050565b600a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611cd057600080fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d1f612f3f565b611d27612f3f565b600080611d32610e9a565b1415611d5f576000604051805910611d475750595b90808252806020026020018201604052509250611dd8565b6064604051805910611d6e5750595b90808252806020026020018201604052509150600190505b620f4240811015611dd45781600d600083815260200190815260200160002054815181101515611db257fe5b9060200190602002018051809190600101815250508080600101915050611d86565b8192505b505090565b60076000815481101515611ded57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611eb8575060076001815481101515611e5d57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611f29575060076002815481101515611ece57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611f9a575060076003815481101515611f3f57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061200b575060076004815481101515611fb057fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061207c57506007600581548110151561202157fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806120ed57506007600681548110151561209257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061215d575060078081548110151561210257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561216857600080fd5b600860009054906101000a900460ff1615151561218457600080fd5b6001600860006101000a81548160ff021916908315150217905550565b6121a9612f3f565b60006121b3612f3f565b600080600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054935060008414156122285760006040518059106122105750595b908082528060200260200182016040525094506122fb565b836040518059106122365750595b9080825280602002602001820160405250925060009150600190505b600954811115156122f7578573ffffffffffffffffffffffffffffffffffffffff16600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122ea578083838151811015156122d357fe5b906020019060200201818152505081806001019250505b8080600101915050612252565b8294505b50505050919050565b6000600954821115151561231457fe5b600d6000838152602001908152602001600020549050919050565b612337612f2b565b6040805190810160405280600581526020017f4457315354000000000000000000000000000000000000000000000000000000815250905090565b60036020528060005260406000206000915090505481565b600080fd5b6000806000600f54348115156123a157fe5b049250429150600090505b8281101561244d5761243f60016005838115156123c557fe5b061461240c576032600e548115156123d957fe5b06603284600e548501016040518082815260200191505060405180910390206001900481151561240557fe5b0601612439565b603283600e548401016040518082815260200191505060405180910390206001900481151561243757fe5b065b33612d86565b5080806001019150506123ac565b82600e60008282540192505081905550505050565b60003373ffffffffffffffffffffffffffffffffffffffff1661248485612bae565b73ffffffffffffffffffffffffffffffffffffffff161415156124a657600080fd5b8573ffffffffffffffffffffffffffffffffffffffff166124c685612beb565b73ffffffffffffffffffffffffffffffffffffffff161415156124e857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561252457600080fd5b61252f868686612c7e565b60008673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36125ed85612ce6565b15612777578473ffffffffffffffffffffffffffffffffffffffff1663f0b9e5ba878686866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437820191505095505050505050602060405180830381600087803b15156126b657600080fd5b5af115156126c357600080fd5b50505060405180519050905060405180807f6f6e455243373231526563656976656428616464726573732c75696e7432353681526020017f2c62797465732900000000000000000000000000000000000000000000000000815250602701905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561277657600080fd5b5b505050505050565b600b6020528060005260406000206000915090505481565b61279f612f2b565b6127a7612f53565b606060405190810160405280603481526020017f68747470733a2f2f636f7273617269756d2e706c61796461726b77696e64732e81526020017f636f6d2f63617264732f30303030302e6a736f6e0000000000000000000000008152509150819050600a612710600d60008681526020019081526020016000205481151561282b57fe5b0481151561283557fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000281602181518110151561286a57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a6103e8600d6000868152602001908152602001600020548115156128bc57fe5b048115156128c657fe5b066030017f0100000000000000000000000000000000000000000000000000000000000000028160228151811015156128fb57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a6064600d60008681526020019081526020016000205481151561294c57fe5b0481151561295657fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000281602381518110151561298b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a80600d6000868152602001908152602001600020548115156129db57fe5b048115156129e557fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002816024815181101515612a1a57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a6001600d600086815260200190815260200160002054811515612a6b57fe5b04811515612a7557fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002816025815181101515612aaa57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b60026020528060005260406000206000915090505481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b600f5481565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b6000600c600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b81600c600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b612c8781612e30565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550612ce18183612e86565b505050565b600080823b905060008111915050919050565b6000808284019050838110151515612d0d57fe5b8091505092915050565b6000806000841415612d2c5760009150612d4b565b8284029050828482811515612d3d57fe5b04141515612d4757fe5b8091505b5092915050565b6000808284811515612d6057fe5b0490508091505092915050565b6000828211151515612d7b57fe5b818303905092915050565b6000600954620f4240111515612d9b57600080fd5b60096000815480929190600101919050555082600d6000600954815260200190815260200160002081905550612dd360095483612e86565b8173ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a3600954905092915050565b6000600c600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612fa357600080fd5b600081111515612fb257600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561300057600080fd5b6004805480600101828161301491906130c6565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130bc81600054612cf990919063ffffffff16565b6000819055505050565b8154818355818115116130ed578183600052602060002091820191016130ec91906130f2565b5b505050565b61311491905b808211156131105760008160009055506001016130f8565b5090565b905600a165627a7a7230582043bed85377b7babfa1e7893162864ac1d87cb0d020b5a48ea1e5c7abf8df7dab0029000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000004ab6c984e72cbab4162429721839d72b188010e300000000000000000000000000c0bca70eaaadf21a158141ec7ea699a17d63ed0000000000000000000000004978faf663a3f1a6c74accccbd63294efec64624000000000000000000000000772009e69b051879e1a5255d9af00723df9a6e04000000000000000000000000a464b05832a72a1a47ace2be18635e3a4c9a240a000000000000000000000000d450fcbfbb75cdaeb65693849a6eff0c2976026f000000000000000000000000d129bbf705dc91f50c5d9b44749507f458a733c8000000000000000000000000fdc2ad68fd1ef5341a442d0e2fc8b974e273ac160000000000000000000000003b8957d1f6f416ad11b25e9c4e99fef3542f6802000000000000000000000000afdb9e04b1bd67224b0d993d9ed08054ab99f4b1000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x6060604052600436106101c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101c4578063081812fc14610252578063095ea7b3146102b557806318160ddd146102ec57806320e07e7f1461031557806323b872dd146103385780632419217e1461038e57806336516a8a146103f15780633a98ef39146104465780633d8807f81461046f5780633f4ba83a146104fd57806342842e0e146105125780634e71d92d146105685780635c975abb1461057d57806363037b0c146105aa5780636352211e1461060d5780636e9e48ef1461067057806370a08231146106d35780637c97479b146107205780638456cb591461078a5780638462151c1461079f5780639188d3121461082d57806395d89b41146108645780639852595c146108f2578063a22cb4651461093f578063a3006abf14610983578063b88d4fde1461098d578063c2fb09a8146109f7578063c87b56dd14610a44578063ce7c2ac214610ae0578063e1479d0714610b2d578063e33b7de314610b82578063e58172b114610bab578063e985e9c514610bd4578063eb5653d714610c44578063fd2546ac14610ca7575b005b34156101cf57600080fd5b6101d7610cde565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102175780820151818401526020810190506101fc565b50505050905090810190601f1680156102445780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025d57600080fd5b6102736004808035906020019091905050610d21565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ea600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d33565b005b34156102f757600080fd5b6102ff610e9a565b6040518082815260200191505060405180910390f35b341561032057600080fd5b6103366004808035906020019091905050610ea4565b005b61038c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611239565b005b341561039957600080fd5b6103af60048080359060200190919050506113be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103fc57600080fd5b6104046113fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045157600080fd5b610459611423565b6040518082815260200191505060405180910390f35b341561047a57600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611429565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104e95780820151818401526020810190506104ce565b505050509050019250505060405180910390f35b341561050857600080fd5b61051061158c565b005b610566600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611620565b005b341561057357600080fd5b61057b61192d565b005b341561058857600080fd5b610590611b95565b604051808215151515815260200191505060405180910390f35b34156105b557600080fd5b6105cb6004808035906020019091905050611ba8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061857600080fd5b61062e6004808035906020019091905050611be7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067b57600080fd5b6106916004808035906020019091905050611c60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106de57600080fd5b61070a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611c93565b6040518082815260200191505060405180910390f35b341561072b57600080fd5b610733611d17565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077657808201518184015260208101905061075b565b505050509050019250505060405180910390f35b341561079557600080fd5b61079d611ddd565b005b34156107aa57600080fd5b6107d6600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506121a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108195780820151818401526020810190506107fe565b505050509050019250505060405180910390f35b341561083857600080fd5b61084e6004808035906020019091905050612304565b6040518082815260200191505060405180910390f35b341561086f57600080fd5b61087761232f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108b757808201518184015260208101905061089c565b50505050905090810190601f1680156108e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108fd57600080fd5b610929600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612372565b6040518082815260200191505060405180910390f35b341561094a57600080fd5b610981600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035151590602001909190505061238a565b005b61098b61238f565b005b6109f5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080359060200190820180359060200191909192905050612462565b005b3415610a0257600080fd5b610a2e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061277f565b6040518082815260200191505060405180910390f35b3415610a4f57600080fd5b610a656004808035906020019091905050612797565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aa5578082015181840152602081019050610a8a565b50505050905090810190601f168015610ad25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610aeb57600080fd5b610b17600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612ae0565b6040518082815260200191505060405180910390f35b3415610b3857600080fd5b610b40612af8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b8d57600080fd5b610b95612b1e565b6040518082815260200191505060405180910390f35b3415610bb657600080fd5b610bbe612b24565b6040518082815260200191505060405180910390f35b3415610bdf57600080fd5b610c2a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b2a565b604051808215151515815260200191505060405180910390f35b3415610c4f57600080fd5b610c656004808035906020019091905050612b63565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610cb257600080fd5b610cc86004808035906020019091905050612b96565b6040518082815260200191505060405180910390f35b610ce6612f2b565b6040805190810160405280601e81526020017f4461726b2057696e64732046697273742045646974696f6e2043617264730000815250905090565b6000610d2c82612bae565b9050919050565b610d3c81612beb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d7557600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610db057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16610dd182612bae565b73ffffffffffffffffffffffffffffffffffffffff16141580610e215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15610e9657610e308282612c28565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b6000600954905090565b60076000815481101515610eb457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f7f575060076001815481101515610f2457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610ff0575060076002815481101515610f9557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061106157506007600381548110151561100657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806110d257506007600481548110151561107757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806111435750600760058154811015156110e857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806111b457506007600681548110151561115957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061122457506007808154811015156111c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561122f57600080fd5b80600f8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1661125982612bae565b73ffffffffffffffffffffffffffffffffffffffff1614151561127b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1661129b82612beb565b73ffffffffffffffffffffffffffffffffffffffff161415156112bd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156112f957600080fd5b611304838383612c7e565b60008373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6007818154811015156113cd57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b611431612f3f565b600061143b612f3f565b600080600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054935060008414156114b05760006040518059106114985750595b90808252806020026020018201604052509450611583565b836040518059106114be5750595b9080825280602002602001820160405250925060009150600190505b6009548111151561157f578573ffffffffffffffffffffffffffffffffffffffff16600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115725780838381518110151561155b57fe5b906020019060200201818152505081806001019250505b80806001019150506114da565b8294505b50505050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115e857600080fd5b600860009054906101000a900460ff16151561160357600080fd5b6000600860006101000a81548160ff021916908315150217905550565b60003373ffffffffffffffffffffffffffffffffffffffff1661164283612bae565b73ffffffffffffffffffffffffffffffffffffffff1614151561166457600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1661168483612beb565b73ffffffffffffffffffffffffffffffffffffffff161415156116a657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156116e257600080fd5b6116ed848484612c7e565b60008473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36117ab83612ce6565b15611927578273ffffffffffffffffffffffffffffffffffffffff1663f0b9e5ba85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001806020018281038252600081526020016020019350505050602060405180830381600087803b151561186657600080fd5b5af1151561187357600080fd5b50505060405180519050905060405180807f6f6e455243373231526563656976656428616464726573732c75696e7432353681526020017f2c62797465732900000000000000000000000000000000000000000000000000815250602701905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561192657600080fd5b5b50505050565b60008060003392506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561198357600080fd5b6119af6001543073ffffffffffffffffffffffffffffffffffffffff1631612cf990919063ffffffff16565b9150611a68600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a5a600054611a4c600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487612d1790919063ffffffff16565b612d5290919063ffffffff16565b612d6d90919063ffffffff16565b905060008114151515611a7a57600080fd5b803073ffffffffffffffffffffffffffffffffffffffff163110151515611aa057600080fd5b611af281600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cf990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b4a81600154612cf990919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611b9057600080fd5b505050565b600860009054906101000a900460ff1681565b600481815481101515611bb757fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611c5b57600080fd5b919050565b600a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611cd057600080fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d1f612f3f565b611d27612f3f565b600080611d32610e9a565b1415611d5f576000604051805910611d475750595b90808252806020026020018201604052509250611dd8565b6064604051805910611d6e5750595b90808252806020026020018201604052509150600190505b620f4240811015611dd45781600d600083815260200190815260200160002054815181101515611db257fe5b9060200190602002018051809190600101815250508080600101915050611d86565b8192505b505090565b60076000815481101515611ded57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611eb8575060076001815481101515611e5d57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611f29575060076002815481101515611ece57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611f9a575060076003815481101515611f3f57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061200b575060076004815481101515611fb057fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061207c57506007600581548110151561202157fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806120ed57506007600681548110151561209257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061215d575060078081548110151561210257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561216857600080fd5b600860009054906101000a900460ff1615151561218457600080fd5b6001600860006101000a81548160ff021916908315150217905550565b6121a9612f3f565b60006121b3612f3f565b600080600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054935060008414156122285760006040518059106122105750595b908082528060200260200182016040525094506122fb565b836040518059106122365750595b9080825280602002602001820160405250925060009150600190505b600954811115156122f7578573ffffffffffffffffffffffffffffffffffffffff16600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122ea578083838151811015156122d357fe5b906020019060200201818152505081806001019250505b8080600101915050612252565b8294505b50505050919050565b6000600954821115151561231457fe5b600d6000838152602001908152602001600020549050919050565b612337612f2b565b6040805190810160405280600581526020017f4457315354000000000000000000000000000000000000000000000000000000815250905090565b60036020528060005260406000206000915090505481565b600080fd5b6000806000600f54348115156123a157fe5b049250429150600090505b8281101561244d5761243f60016005838115156123c557fe5b061461240c576032600e548115156123d957fe5b06603284600e548501016040518082815260200191505060405180910390206001900481151561240557fe5b0601612439565b603283600e548401016040518082815260200191505060405180910390206001900481151561243757fe5b065b33612d86565b5080806001019150506123ac565b82600e60008282540192505081905550505050565b60003373ffffffffffffffffffffffffffffffffffffffff1661248485612bae565b73ffffffffffffffffffffffffffffffffffffffff161415156124a657600080fd5b8573ffffffffffffffffffffffffffffffffffffffff166124c685612beb565b73ffffffffffffffffffffffffffffffffffffffff161415156124e857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561252457600080fd5b61252f868686612c7e565b60008673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36125ed85612ce6565b15612777578473ffffffffffffffffffffffffffffffffffffffff1663f0b9e5ba878686866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437820191505095505050505050602060405180830381600087803b15156126b657600080fd5b5af115156126c357600080fd5b50505060405180519050905060405180807f6f6e455243373231526563656976656428616464726573732c75696e7432353681526020017f2c62797465732900000000000000000000000000000000000000000000000000815250602701905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561277657600080fd5b5b505050505050565b600b6020528060005260406000206000915090505481565b61279f612f2b565b6127a7612f53565b606060405190810160405280603481526020017f68747470733a2f2f636f7273617269756d2e706c61796461726b77696e64732e81526020017f636f6d2f63617264732f30303030302e6a736f6e0000000000000000000000008152509150819050600a612710600d60008681526020019081526020016000205481151561282b57fe5b0481151561283557fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000281602181518110151561286a57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a6103e8600d6000868152602001908152602001600020548115156128bc57fe5b048115156128c657fe5b066030017f0100000000000000000000000000000000000000000000000000000000000000028160228151811015156128fb57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a6064600d60008681526020019081526020016000205481151561294c57fe5b0481151561295657fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000281602381518110151561298b57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a80600d6000868152602001908152602001600020548115156129db57fe5b048115156129e557fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002816024815181101515612a1a57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a6001600d600086815260200190815260200160002054811515612a6b57fe5b04811515612a7557fe5b066030017f010000000000000000000000000000000000000000000000000000000000000002816025815181101515612aaa57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b60026020528060005260406000206000915090505481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b600f5481565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b6000600c600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b81600c600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b612c8781612e30565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550612ce18183612e86565b505050565b600080823b905060008111915050919050565b6000808284019050838110151515612d0d57fe5b8091505092915050565b6000806000841415612d2c5760009150612d4b565b8284029050828482811515612d3d57fe5b04141515612d4757fe5b8091505b5092915050565b6000808284811515612d6057fe5b0490508091505092915050565b6000828211151515612d7b57fe5b818303905092915050565b6000600954620f4240111515612d9b57600080fd5b60096000815480929190600101919050555082600d6000600954815260200190815260200160002081905550612dd360095483612e86565b8173ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a3600954905092915050565b6000600c600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612fa357600080fd5b600081111515612fb257600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561300057600080fd5b6004805480600101828161301491906130c6565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130bc81600054612cf990919063ffffffff16565b6000819055505050565b8154818355818115116130ed578183600052602060002091820191016130ec91906130f2565b5b505050565b61311491905b808211156131105760008160009055506001016130f8565b5090565b905600a165627a7a7230582043bed85377b7babfa1e7893162864ac1d87cb0d020b5a48ea1e5c7abf8df7dab0029

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000004ab6c984e72cbab4162429721839d72b188010e300000000000000000000000000c0bca70eaaadf21a158141ec7ea699a17d63ed0000000000000000000000004978faf663a3f1a6c74accccbd63294efec64624000000000000000000000000772009e69b051879e1a5255d9af00723df9a6e04000000000000000000000000a464b05832a72a1a47ace2be18635e3a4c9a240a000000000000000000000000d450fcbfbb75cdaeb65693849a6eff0c2976026f000000000000000000000000d129bbf705dc91f50c5d9b44749507f458a733c8000000000000000000000000fdc2ad68fd1ef5341a442d0e2fc8b974e273ac160000000000000000000000003b8957d1f6f416ad11b25e9c4e99fef3542f6802000000000000000000000000afdb9e04b1bd67224b0d993d9ed08054ab99f4b1000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : _payees (address[]): 0x4ab6C984E72CbaB4162429721839d72B188010E3,0x00C0bCa70EAaADF21A158141EC7eA699a17D63ed,0x4978FaF663A3F1A6c74ACCCCBd63294Efec64624,0x772009E69B051879E1a5255D9af00723df9A6E04,0xA464b05832a72a1a47Ace2Be18635E3a4c9a240A,0xd450fCBfbB75CDAeB65693849A6EFF0c2976026F,0xd129BBF705dC91F50C5d9B44749507f458a733C8,0xfDC2ad68fd1EF5341a442d0E2fC8b974E273AC16,0x3b8957D1F6f416aD11b25e9c4e99FEF3542f6802,0xAfDB9e04B1bd67224B0D993d9eD08054AB99F4b1
Arg [1] : _shares (uint256[]): 14,14,1,1,1,1,1,1,1,1

-----Encoded View---------------
24 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [3] : 0000000000000000000000004ab6c984e72cbab4162429721839d72b188010e3
Arg [4] : 00000000000000000000000000c0bca70eaaadf21a158141ec7ea699a17d63ed
Arg [5] : 0000000000000000000000004978faf663a3f1a6c74accccbd63294efec64624
Arg [6] : 000000000000000000000000772009e69b051879e1a5255d9af00723df9a6e04
Arg [7] : 000000000000000000000000a464b05832a72a1a47ace2be18635e3a4c9a240a
Arg [8] : 000000000000000000000000d450fcbfbb75cdaeb65693849a6eff0c2976026f
Arg [9] : 000000000000000000000000d129bbf705dc91f50c5d9b44749507f458a733c8
Arg [10] : 000000000000000000000000fdc2ad68fd1ef5341a442d0e2fc8b974e273ac16
Arg [11] : 0000000000000000000000003b8957d1f6f416ad11b25e9c4e99fef3542f6802
Arg [12] : 000000000000000000000000afdb9e04b1bd67224b0d993d9ed08054ab99f4b1
Arg [13] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [14] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [15] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [22] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000001


Swarm Source

bzzr://43bed85377b7babfa1e7893162864ac1d87cb0d020b5a48ea1e5c7abf8df7dab

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.