Contract 0x8aa729e6b7c4196f166dc352aaece0334879a15d

Contract Overview

Balance:
0 Ether
TxHash Block Age From To Value [TxFee]
0x901f5d58e67436fa0aee3a278f5652b678c77c31f1c84d1aa341d1fd7819e6d83148627159 days 12 hrs ago0x686c468f5006b123421d1ed03e0afa83db44d2f4 IN  0x8aa729e6b7c4196f166dc352aaece0334879a15d0 Ether0.000087378
0x3846b35b26f4df2a794c867f775671f05cb52f5040f65e76183595ac54bf80ec3148619159 days 12 hrs ago0x686c468f5006b123421d1ed03e0afa83db44d2f4 IN  0x8aa729e6b7c4196f166dc352aaece0334879a15d0 Ether0.000087378
0x44702abb3716a0c208f8fe3d994f6e0549b0ecf937c0897915bb5f54063576523148606159 days 12 hrs ago0x686c468f5006b123421d1ed03e0afa83db44d2f4 IN  0x8aa729e6b7c4196f166dc352aaece0334879a15d0 Ether0.000193384
0x7d9e89a62e50a04ee94ab44d5e2531b64415bab9f9c029a5ca0e5c5beac5eaa73148594159 days 12 hrs ago0x4024e4b9eabf1cfaed3e90e9feb56b0211e34c3c IN  0x8aa729e6b7c4196f166dc352aaece0334879a15d0 Ether0.000088577
0x200c57c933fccb8b95c6c766915e9fe471aa298fee5ba832e79ebb38ca149f0e3148591159 days 12 hrs ago0x9abed85e4e257553595f3a1bc471ed069976fd79 IN  0x8aa729e6b7c4196f166dc352aaece0334879a15d0 Ether0.000088769
0x6c3bfff0b57a9272b0d3ed985a7bfb50f0b46f7b0f1a28f461ebbafd96023c993148586159 days 12 hrs ago0x0cfb668f9c7b59af2a6d49a2e823c6a0ca41bec4 IN  0x8aa729e6b7c4196f166dc352aaece0334879a15d0 Ether0.000026147
0xf1daf61f02c50997606aee54844582464f6b5b71ac918450977ccb7d50aad9363148581159 days 12 hrs ago0xde7bc5d2bf9cbb1d6f27a7c97e780d412c7c233c IN  0x8aa729e6b7c4196f166dc352aaece0334879a15d0 Ether0.000026147
0x563a23dfc766bd7f5c63162fbe0e1c73f6115d8c575a59e5ea291b31033b1d903148524159 days 12 hrs ago0x0cfb668f9c7b59af2a6d49a2e823c6a0ca41bec4 IN  0x8aa729e6b7c4196f166dc352aaece0334879a15d0 Ether0.000082362
0xa89ee5ba1709ef8f14eca8db8ac3bafa3801c333cc81550682f551819ca876dc3148521159 days 12 hrs ago0x0cfb668f9c7b59af2a6d49a2e823c6a0ca41bec4 IN  0x8aa729e6b7c4196f166dc352aaece0334879a15d0 Ether0.000112056
0x84627b38dad5173c8eb7b5415309bcb8dc770865980262368556075cb18821713138158161 days 7 hrs ago0x263c3ab7e4832edf623fbdd66acee71c028ff591 IN  Contract Creation0 Ether0.019056072
[ Download CSV Export 

Latest 2 internal transactions Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x563a23dfc766bd7f5c63162fbe0e1c73f6115d8c575a59e5ea291b31033b1d903148524159 days 12 hrs ago0x8aa729e6b7c4196f166dc352aaece0334879a15d0xbed668f915ced99ccabe607689c4fd8208c13d4d0 Ether
0xa89ee5ba1709ef8f14eca8db8ac3bafa3801c333cc81550682f551819ca876dc3148521159 days 12 hrs ago0x8aa729e6b7c4196f166dc352aaece0334879a15d0xbed668f915ced99ccabe607689c4fd8208c13d4d0 Ether
[ Download CSV Export 

Contract Source Code Verified (Exact Match)

Contract Name:
RegMed

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity 0.4.25;

contract Developed {
    function getSingleDeveloper(address _devID) public view returns (address devAccount, uint256 comission, uint248 balance);
    function payComission() public payable returns (bool success);
}

contract RegMed {

    constructor(address _devContract) public payable {
        devContract = Developed(_devContract);
    }

    //Events section
    event NewRecordBuyed (
        address _patient,
        uint _value,
        uint248 _recordOrderId
    );

    event NewOrder (
        string purpose,
        uint valueOffered,
        uint248 _recordOrderId
    );

    event NewRecordAvailableToBuy (
        bytes10 category,
        uint price,
        uint248 recordSellableId
    );

    event NewRecordToPatient (
        address patient,
        uint32 recordId
    );

    event NewMediaToPatientRecord (
        address patient,
        uint32 recordId
    );

    event NewCategory (
        bytes10 code
    );

    event NewThirdPartyIssuer (
        address parter
    );

    event NewPatient (
        address patientAddress
    );

    //Structs section
    struct ThirdPartyIssuer {
        string name;
        string country; //Follows ISO-3166-1_Alpha2 Standard - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements
        bool exists;
    }
    
    struct RecordCategory {
        bytes10 code; //3 digits maximum
        string description;
    }
    
    struct Record {
        RecordCategory category;
        string dateOfFact; //Follows RFC3339 standard
        uint dateOfRecord; 
        string details;
        string mediaUrl;
        bool isPatientTheIssuer;
        bool isSellable;
        ThirdPartyIssuer externalIssuer;
        uint248 recordSellableId;
        bool exists;
    }
    
    struct RecordSellable {
        address patient;
        uint32 recordCode;
        uint price;
    }

    struct RecordOrder {
        address requester;
        string purpose;
        uint248 recordSellableId;
        bool accepted;
        bool exists;
        uint valuePaid;
        string reqName; 
        string reqEmail;
    }
    
    struct Patient {
        address account;       
        string dateOfBirth; //Follows RFC3339 standard
        string genderOfBirth;
        string cityOfBirth;
        bytes2 countryOfBirth; //Follows ISO-3166-1_Alpha2 Standard
        string ethnicity;
        uint32 medicalRecordsId;
        uint248 recordOrderId;
        mapping (address => ThirdPartyIssuer) allowedIssuers;
        mapping (uint32 => Record) medicalRecords;
        mapping (uint248 => RecordOrder) recordOrders;
    }
    
    struct RecordBuyed {
        uint248 recordOrderId;
        string recordDetails;
        bool exists;
    }
      
    mapping(address => Patient) private patients;
    
    mapping(address => ThirdPartyIssuer) public thirdPartyIssuersAvailable;

    bytes10[] private recordCategoryCodes;
    mapping(bytes10 => RecordCategory) private validRecordCategories;

    uint248 public recordSellableId;
    mapping(uint248 => RecordSellable) private recordsAvailableToSell;

    uint248 public recordOrderId;
    mapping(uint248 => RecordOrder) private recordOrders;
    
    mapping(uint248 => RecordBuyed) private recordsBuyed;
    
    Developed devContract;
 
    modifier onlyExistingPatient(address _acct) {
        require(_acct != address(0), "You must provide a valid account address");
        require(patients[_acct].account != address(0), "You must provide a valid patient account address");
        _;
    }
    
    function newPatient(
        address _acct, string _dateOfBirth, string _genderOfBirth, string _cityOfBirth, bytes2 _countryOfBirth, string _ethnicity) 
        public returns (bool status) {   

        require(_acct != address(0), "You must provide a valid account address");

        bytes memory checkDateOfBirth = bytes(_dateOfBirth);
        require(checkDateOfBirth.length>9, "You must provide a valid date. It must follow RFC3339 standard");
        bytes memory checkGenderOfBirth = bytes(_genderOfBirth);
        require(checkGenderOfBirth.length == 1, "You must provide M for make or F for female");
        require(_countryOfBirth.length==2, "You must provide a valid Country Code. You must follow ISO-3166-1_Alpha2 Standard");
        patients[_acct] = Patient(_acct, _dateOfBirth, _genderOfBirth, _cityOfBirth, _countryOfBirth, _ethnicity, 1, 1);      
        
        emit NewPatient (
            _acct
        );  
        
        status = true;
        return;
    }

    function getPatientDetails(address _acct) public view returns 
    (string dateOfBirth, string genderOfBirth, string cityOfBirth, bytes2 countryOfBirth, string ethnicity) {
        require(patients[_acct].account != address(0), "You must provide a valid account address");
        dateOfBirth = patients[_acct].dateOfBirth;
        genderOfBirth = patients[_acct].genderOfBirth;
        cityOfBirth = patients[_acct].cityOfBirth;
        countryOfBirth = patients[_acct].countryOfBirth;
        ethnicity = patients[_acct].ethnicity;
        return;
    }

    function allowIssuers(address _acct) public returns (bool) { 
        Patient storage patient = patients[msg.sender];
        require(patient.account != address(0), "You must provide a valid account address");
        ThirdPartyIssuer memory tpi = thirdPartyIssuersAvailable[_acct];
        require(tpi.exists==true, "You must provide a valid Third-Party issuer");
        patient.allowedIssuers[_acct] = tpi;
        return true;
    }

    function removeIssuers(address _acct) public returns (bool) { 
        Patient storage patient = patients[msg.sender];
        require(patient.account != address(0), "You must provide a valid account address");
        ThirdPartyIssuer memory tpi = thirdPartyIssuersAvailable[_acct];
        require(tpi.exists==true, "You must provide a valid Third-Party issuer");
        delete patient.allowedIssuers[_acct];
        return true;
    }
    
    function newThirdPartyIssuer(address _acct, string _name, string _country) public returns (bool success) { 
        require(_acct == msg.sender, "You must provide a valid account address");
        bytes memory checkName = bytes(_name);
        require(checkName.length>2, "You must provide a valid Institution Name");
        bytes memory checkCountry = bytes(_country);
        require(checkCountry.length==2, "You must provide a valid Country Code. You must follow ISO-3166-1_Alpha2 Standard");
        thirdPartyIssuersAvailable[_acct] = ThirdPartyIssuer(_name, _country, true);
        success = true;
        emit NewThirdPartyIssuer (
            _acct
        );
        return;
    }    
    
    function newRecordCategory(bytes10 _code, string description) public returns (bool status) { 
        (,uint comission,) = devContract.getSingleDeveloper(msg.sender);
        require(comission > 0, "Developer must be allowed to add new record category");
        require(_code.length >= 4, "Category must have a valid Code with at least 4 digits");
        require(validRecordCategories[_code].code == "", "Category already exists");
        RecordCategory memory rc = RecordCategory(_code, description);
        validRecordCategories[_code] = rc;
        recordCategoryCodes.push(_code);
        status = true;
        emit NewCategory (
            _code
        );
        return;
    }

    function getRecordCategory(bytes10 _code) public view returns (bytes10 code, string description) {
        require(_code.length >= 4, "Category must have a valid Code with at least 4 digits");
        code = validRecordCategories[_code].code;
        description = validRecordCategories[_code].description;
        return;
    }

    function totalRecordCategories() public view returns (uint256) {
        return recordCategoryCodes.length;
    }

    
    function newRecord(address _pacientAddress, bytes10 _recordCategoryCode, string _dateOfFact, string _details, address _externalIssuer)  
    public returns (uint256) {

        require (_recordCategoryCode.length >= 4, "Category must have a valid Code with at least 4 digits");
        RecordCategory storage recCategory = validRecordCategories[_recordCategoryCode];
        require (recCategory.code.length >= 4, "Category must have a valid Code with at least 4 digits");
        bytes memory checkDateOfFact = bytes(_dateOfFact);
        require(checkDateOfFact.length>9, "You must provide a valid date of fact. It must follow RFC3339 standard");
        Patient storage patient = patients[_pacientAddress];
        require(patient.account != address(0), "You must provide a patient already exists on Blockchain");
       
        bool isPatientIssuer = true;
        ThirdPartyIssuer memory tpi = ThirdPartyIssuer("", "", false);
        if (patient.account != msg.sender) {
            require(_externalIssuer != address(0) && _externalIssuer == msg.sender, "You must provide a valid third-party account address");
            tpi = patient.allowedIssuers[_externalIssuer];
            require(tpi.exists == true, "You must provide a third-party account address allowed by patient");
            isPatientIssuer = false;
        } 
        patient.medicalRecordsId = (patient.medicalRecordsId+1);
        Record memory record = Record(recCategory, _dateOfFact, now, _details, "", isPatientIssuer, false, tpi, 0, true);
        patient.medicalRecords[patient.medicalRecordsId] = record;

        emit NewRecordToPatient (
            _pacientAddress,
            patient.medicalRecordsId
        );

        return patient.medicalRecordsId;
    }

    function addMediaToRecord(
        address _pacientAddress, uint32 _recordId, string _mediaUrl, address _externalIssuer) 
        public returns (bool success) {       
        
        bytes memory checkMediaUrl = bytes(_mediaUrl);
        require(checkMediaUrl.length>12, "You must provide a valid URL.");

        Patient storage patient = patients[_pacientAddress];
        require(patient.account != address(0), "You must provide a patient already exists on Blockchain");        
        if (patient.account != msg.sender) {
            require(_externalIssuer != address(0) && _externalIssuer == msg.sender, "You must provide a valid third-party account address");
            ThirdPartyIssuer storage checkThirdPartyIssuer = patient.allowedIssuers[_externalIssuer];
            require(checkThirdPartyIssuer.exists == true, "You must provide a third-party account address allowed by patient");
        }

        Record memory record = patient.medicalRecords[_recordId];
        require(record.exists, "You must provide a valid medical record ID");
        patient.medicalRecords[_recordId].mediaUrl = _mediaUrl;
        
        emit NewMediaToPatientRecord (
            _pacientAddress,
            patient.medicalRecordsId
        );
        
        success = true;
        return;
    }

    function deleteRecord(uint32 _recordId) public returns (bool) {

        Patient storage patient = patients[msg.sender];
        require(patient.account != address(0), "You must provide a valid account address");

        RecordCategory memory rc = RecordCategory(0x00, " ");

        Record storage rs = patient.medicalRecords[_recordId];

        rs.isSellable = false;
        rs.category = rc;
        rs.dateOfFact = " "; //Follows RFC3339 standard
        rs.dateOfRecord = 1; 
        rs.details = " ";
        rs.mediaUrl = " ";
        rs.isPatientTheIssuer = false;
        rs.recordSellableId = 1;
        rs.exists = false;

        return true;
    }

    //TODO: Add support to an external third-party to access the record after being allowed by patient
    function getPatientRecordDetails(
        address _pacientAddress, uint32 _recordId) 
        public view returns (
            bytes10, string, uint, string, string, bool, bool, string, string) {       
        
        Patient storage patient = patients[_pacientAddress];
        require(patient.account != address(0), "You must provide a patient already exists on Blockchain");

        Record memory record = patient.medicalRecords[_recordId];
        require(record.exists, "You must provide a valid medical record ID");

        if (patient.account == msg.sender || patient.allowedIssuers[msg.sender].exists) {
            return  (record.category.code,                 
                    record.dateOfFact,
                    record.dateOfRecord,
                    record.details,
                    record.mediaUrl,
                    record.isPatientTheIssuer,
                    record.isSellable,
                    record.externalIssuer.name,
                    record.externalIssuer.country
            );
        }
    }

    //Returns record details to buyer
    function getRecordSoldDetails(uint248 _orderId) 
        public view returns (
            string) {
        
        require(_orderId > 0, "Order Id must be valid");

        RecordOrder memory ro = recordOrders[_orderId];

        require(ro.exists, "Order Id not found");
        require(ro.accepted, "Order was not sold");
        require(ro.requester == msg.sender, "Only buyer can have access to the information");

        RecordBuyed memory rs = recordsBuyed[_orderId];
        require(rs.exists, "Record buyed not found");

        return rs.recordDetails;
    }

    function getTotalPatientRecords(address _pacientAddress) public view returns (uint32) {
        Patient storage patient = patients[_pacientAddress];
        require(patient.account != address(0), "You must provide a patient already exists on Blockchain");
        if (msg.sender == patient.account || patient.allowedIssuers[msg.sender].exists) {
            return patient.medicalRecordsId;
        }
    } 

    function makeRecordSellable(uint32 _recordId, uint64 _price) public returns (uint248 newID) {
        Patient storage patient = patients[msg.sender];
        require(patient.account != address(0), "You must provide a valid account address");
        require(_price >= 100000000000000, "The price set is lower than the mininum required");

        Record storage record = patient.medicalRecords[_recordId];
        require(record.exists, "You must provide a valid medical record ID");

        RecordSellable memory rs = RecordSellable(patient.account, _recordId, _price);

        newID = recordSellableId++;
        recordsAvailableToSell[recordSellableId] = rs;

        record.isSellable = true;
        record.recordSellableId = newID;

        emit NewRecordAvailableToBuy (
            record.category.code,
            _price,
            recordSellableId
        );

        return;
    }
    
    function makeRecordNotSellable(uint32 _recordId) public returns (bool) {
        Patient storage patient = patients[msg.sender];
        require(patient.account != address(0), "You must provide a valid account address");
        Record storage rs = patient.medicalRecords[_recordId];
        rs.isSellable = false;
        return true;
    }

    function getRecordSellable(uint248 _recordId) public view returns 
        (address patient, bytes10 recordCategoryCode, uint price, bool stillSellable) {
        patient = address(0);        
        price = 0;
        stillSellable = false;
        
        RecordSellable storage rs = recordsAvailableToSell[_recordId];

        Record memory record = patients[rs.patient].medicalRecords[rs.recordCode];
        require(record.exists, "You must provide a valid medical record ID");
        
        if (!record.isSellable) {
            return;
        }
        
        patient = rs.patient;
        recordCategoryCode = record.category.code;
        price = rs.price;
        stillSellable = record.isSellable;

        return;
    }

    function askToBuy(uint248 _recordId, string _purpose, string _reqName, string _reqEmail) 
        public payable returns (uint248 newID) {

        bytes memory checkProposal = bytes(_purpose);
        require(checkProposal.length > 10, "You must inform a clear purchase purposes.");
        RecordSellable memory rs = recordsAvailableToSell[_recordId];

        Record memory record = patients[rs.patient].medicalRecords[rs.recordCode];
        require(record.exists, "You must provide a valid medical record ID");

        require(record.isSellable, "Record is no longer available to sell");
        require(msg.value >= rs.price, "The record value is higher than the value offered");

        uint balanceToDevs = (msg.value * 10) / 100;
        devContract.payComission.value(balanceToDevs)();

        newID = recordOrderId++;

        RecordOrder memory ro = RecordOrder(msg.sender, _purpose, _recordId, false, true, msg.value, _reqName, _reqEmail);
        recordOrders[recordOrderId] = ro;

        emit NewOrder (
            _purpose,
            msg.value,
            recordOrderId    
        );

        return;
    }
    
    function getRecordOrderDetails(uint248 _orderID) public view returns 
    (address requester, string purpose, uint248 recordId, bool accepted, uint valuePaid, string reqName, string reqEmail)
    {
        require(_orderID > 0, "Record ID must be valid");        
        RecordOrder storage ro = recordOrders[_orderID];
        
        require (ro.exists, "This order number does not exists");
        
        RecordSellable memory rs = recordsAvailableToSell[ro.recordSellableId];
        require(rs.patient == msg.sender, "Only the patient can see this information");
        
        requester = ro.requester;
        purpose = ro.purpose;
        recordId = ro.recordSellableId;
        accepted = ro.accepted;
        valuePaid = ro.valuePaid;
        reqName = ro.reqName;
        reqEmail = ro.reqEmail;
        
        return;
    }

    /*
    sell - Patient sells her data to a buyer. She informs the data (encrypted or not) within a single string. 
    This string must contains (All these fields above must be separated by semicolons):
        recordCategoryCode - string representation of bytes10,
        patientAddress - string representation of hexidecimal patient address/account, 
        dateOfFact - string representation following RFC3339 standard , 
        dateOfRecord - string representation of date when the record was registered in Ethereum Blockchain, 
        details - detailed medical/health record information , 
        mediaUrl - url to a rich media related to medical/health record, 
        isPatientTheIssuer - string (true or false) information clarifying if the record was inputed by patient itself or an external issuer, 
        externalIssuerAddress - string representation of hexidecimal third-party allowed issuer address/account
    */
    function sell
    (uint248 _orderID, string _recordDetails)
    external payable returns (bool) {
        
        require(_orderID > 0, "Record ID must be valid");        
        RecordOrder storage ro = recordOrders[_orderID];
        if (!ro.exists) {
            return false;
        }
        
        require(ro.accepted == false, "The order has been already accepted");
        
        RecordSellable memory rs = recordsAvailableToSell[ro.recordSellableId];
        require(rs.patient == msg.sender, "Only the patient can authorize the sell");
        
        uint balanceToOwner = (ro.valuePaid * 90) / 100;
        rs.patient.transfer(balanceToOwner);
        
        ro.accepted = true;
        
        RecordBuyed memory rb = RecordBuyed(
            _orderID, _recordDetails, true
        );
        recordsBuyed[_orderID] = rb;
        
        emit NewRecordBuyed(rs.patient, balanceToOwner, _orderID);

        return true;
    }
}

Contract ABI

[{"constant":true,"inputs":[{"name":"_pacientAddress","type":"address"},{"name":"_recordId","type":"uint32"}],"name":"getPatientRecordDetails","outputs":[{"name":"","type":"bytes10"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"bool"},{"name":"","type":"bool"},{"name":"","type":"string"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_acct","type":"address"},{"name":"_name","type":"string"},{"name":"_country","type":"string"}],"name":"newThirdPartyIssuer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"thirdPartyIssuersAvailable","outputs":[{"name":"name","type":"string"},{"name":"country","type":"string"},{"name":"exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_orderID","type":"uint248"}],"name":"getRecordOrderDetails","outputs":[{"name":"requester","type":"address"},{"name":"purpose","type":"string"},{"name":"recordId","type":"uint248"},{"name":"accepted","type":"bool"},{"name":"valuePaid","type":"uint256"},{"name":"reqName","type":"string"},{"name":"reqEmail","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recordId","type":"uint248"},{"name":"_purpose","type":"string"},{"name":"_reqName","type":"string"},{"name":"_reqEmail","type":"string"}],"name":"askToBuy","outputs":[{"name":"newID","type":"uint248"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_orderId","type":"uint248"}],"name":"getRecordSoldDetails","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recordId","type":"uint32"}],"name":"deleteRecord","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pacientAddress","type":"address"},{"name":"_recordId","type":"uint32"},{"name":"_mediaUrl","type":"string"},{"name":"_externalIssuer","type":"address"}],"name":"addMediaToRecord","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_pacientAddress","type":"address"}],"name":"getTotalPatientRecords","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_recordId","type":"uint248"}],"name":"getRecordSellable","outputs":[{"name":"patient","type":"address"},{"name":"recordCategoryCode","type":"bytes10"},{"name":"price","type":"uint256"},{"name":"stillSellable","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_code","type":"bytes10"},{"name":"description","type":"string"}],"name":"newRecordCategory","outputs":[{"name":"status","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_acct","type":"address"},{"name":"_dateOfBirth","type":"string"},{"name":"_genderOfBirth","type":"string"},{"name":"_cityOfBirth","type":"string"},{"name":"_countryOfBirth","type":"bytes2"},{"name":"_ethnicity","type":"string"}],"name":"newPatient","outputs":[{"name":"status","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pacientAddress","type":"address"},{"name":"_recordCategoryCode","type":"bytes10"},{"name":"_dateOfFact","type":"string"},{"name":"_details","type":"string"},{"name":"_externalIssuer","type":"address"}],"name":"newRecord","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recordId","type":"uint32"}],"name":"makeRecordNotSellable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalRecordCategories","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orderID","type":"uint248"},{"name":"_recordDetails","type":"string"}],"name":"sell","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_acct","type":"address"}],"name":"allowIssuers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_code","type":"bytes10"}],"name":"getRecordCategory","outputs":[{"name":"code","type":"bytes10"},{"name":"description","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_acct","type":"address"}],"name":"removeIssuers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recordId","type":"uint32"},{"name":"_price","type":"uint64"}],"name":"makeRecordSellable","outputs":[{"name":"newID","type":"uint248"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_acct","type":"address"}],"name":"getPatientDetails","outputs":[{"name":"dateOfBirth","type":"string"},{"name":"genderOfBirth","type":"string"},{"name":"cityOfBirth","type":"string"},{"name":"countryOfBirth","type":"bytes2"},{"name":"ethnicity","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"recordSellableId","outputs":[{"name":"","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"recordOrderId","outputs":[{"name":"","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_devContract","type":"address"}],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_patient","type":"address"},{"indexed":false,"name":"_value","type":"uint256"},{"indexed":false,"name":"_recordOrderId","type":"uint248"}],"name":"NewRecordBuyed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"purpose","type":"string"},{"indexed":false,"name":"valueOffered","type":"uint256"},{"indexed":false,"name":"_recordOrderId","type":"uint248"}],"name":"NewOrder","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"category","type":"bytes10"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"recordSellableId","type":"uint248"}],"name":"NewRecordAvailableToBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"patient","type":"address"},{"indexed":false,"name":"recordId","type":"uint32"}],"name":"NewRecordToPatient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"patient","type":"address"},{"indexed":false,"name":"recordId","type":"uint32"}],"name":"NewMediaToPatientRecord","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"code","type":"bytes10"}],"name":"NewCategory","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"parter","type":"address"}],"name":"NewThirdPartyIssuer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"patientAddress","type":"address"}],"name":"NewPatient","type":"event"}]

Contract Creation Code

6080604052604051602080615cd5833981016040525160098054600160a060020a031916600160a060020a03909216919091179055615c92806100436000396000f3006080604052600436106101325763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663090d06cb81146101375780630b53a597146103c75780630efa8e3314610480578063373c63151461058a5780633b3fac63146107335780633b7e938b146108255780633f13f1e9146108bb5780634ce4b279146108d957806355331eac146109535780635e7d5bea1461098d578063686bee55146109e957806376bc0b5b14610a515780639e8f1a8414610b9a578063a343d7a814610c68578063a92e65a714610c86578063b6df286514610c9b578063c19e17be14610cbb578063d330ab5f14610cdc578063dfdca28114610d87578063ec4c363614610da8578063efe2ccc114610dd3578063f1b358f914610fc8578063fc54adfe14610fdd575b600080fd5b34801561014357600080fd5b50610161600160a060020a036004351663ffffffff60243516610ff2565b604051808a75ffffffffffffffffffffffffffffffffffffffffffff191675ffffffffffffffffffffffffffffffffffffffffffff191681526020018060200189815260200180602001806020018815151515815260200187151515158152602001806020018060200186810386528e818151815260200191508051906020019080838360005b838110156102005781810151838201526020016101e8565b50505050905090810190601f16801561022d5780820380516001836020036101000a031916815260200191505b5086810385528c5181528c516020918201918e019080838360005b83811015610260578181015183820152602001610248565b50505050905090810190601f16801561028d5780820380516001836020036101000a031916815260200191505b5086810384528b5181528b516020918201918d019080838360005b838110156102c05781810151838201526020016102a8565b50505050905090810190601f1680156102ed5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b83811015610320578181015183820152602001610308565b50505050905090810190601f16801561034d5780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b83811015610380578181015183820152602001610368565b50505050905090810190601f1680156103ad5780820380516001836020036101000a031916815260200191505b509e50505050505050505050505050505060405180910390f35b3480156103d357600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261046c958335600160a060020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506115cb9650505050505050565b604080519115158252519081900360200190f35b34801561048c57600080fd5b506104a1600160a060020a0360043516611821565b60405180806020018060200184151515158152602001838103835286818151815260200191508051906020019080838360005b838110156104ec5781810151838201526020016104d4565b50505050905090810190601f1680156105195780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561054c578181015183820152602001610534565b50505050905090810190601f1680156105795780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561059657600080fd5b506105ab600160f860020a0360043516611964565b6040518088600160a060020a0316600160a060020a031681526020018060200187600160f860020a0316600160f860020a0316815260200186151515158152602001858152602001806020018060200184810384528a818151815260200191508051906020019080838360005b83811015610630578181015183820152602001610618565b50505050905090810190601f16801561065d5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015610690578181015183820152602001610678565b50505050905090810190601f1680156106bd5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156106f05781810151838201526020016106d8565b50505050905090810190601f16801561071d5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b60408051602060046024803582810135601f8101859004850286018501909652858552610809958335600160f860020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611d459650505050505050565b60408051600160f860020a039092168252519081900360200190f35b34801561083157600080fd5b50610846600160f860020a036004351661271a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610880578181015183820152602001610868565b50505050905090810190601f1680156108ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108c757600080fd5b5061046c63ffffffff60043516612c3d565b3480156108e557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261046c948235600160a060020a0316946024803563ffffffff169536959460649492019190819084018382808284375094975050509235600160a060020a03169350612e0992505050565b34801561095f57600080fd5b50610974600160a060020a036004351661359c565b6040805163ffffffff9092168252519081900360200190f35b34801561099957600080fd5b506109ae600160f860020a0360043516613659565b60408051600160a060020a039095168552600160b060020a031990931660208501528383019190915215156060830152519081900360800190f35b3480156109f557600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261046c958335600160b060020a031916953695604494919390910191908190840183828082843750949750613b909650505050505050565b348015610a5d57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261046c958335600160a060020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f818a01358b0180359182018390048302840183018552818452989b7fffff0000000000000000000000000000000000000000000000000000000000008b35169b909a909994019750919550918201935091508190840183828082843750949750613e3f9650505050505050565b348015610ba657600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610c56948235600160a060020a03169460248035600160b060020a0319169536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050509235600160a060020a0316935061418192505050565b60408051918252519081900360200190f35b348015610c7457600080fd5b5061046c63ffffffff600435166148e1565b348015610c9257600080fd5b50610c56614982565b61046c60048035600160f860020a03169060248035908101910135614989565b348015610cc757600080fd5b5061046c600160a060020a0360043516614d0a565b348015610ce857600080fd5b50610cfe600160b060020a031960043516614fe7565b60408051600160b060020a03198416815260208082018381528451938301939093528351919291606084019185019080838360005b83811015610d4b578181015183820152602001610d33565b50505050905090810190601f168015610d785780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b348015610d9357600080fd5b5061046c600160a060020a03600435166150a3565b348015610db457600080fd5b5061080963ffffffff6004351667ffffffffffffffff60243516615359565b348015610ddf57600080fd5b50610df4600160a060020a0360043516615637565b604080517fffff0000000000000000000000000000000000000000000000000000000000008416606082015260a0808252875190820152865190918291602080840192840191608085019160c0860191908c019080838360005b83811015610e66578181015183820152602001610e4e565b50505050905090810190601f168015610e935780820380516001836020036101000a031916815260200191505b5085810384528951815289516020918201918b019080838360005b83811015610ec6578181015183820152602001610eae565b50505050905090810190601f168015610ef35780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b83811015610f26578181015183820152602001610f0e565b50505050905090810190601f168015610f535780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015610f86578181015183820152602001610f6e565b50505050905090810190601f168015610fb35780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b348015610fd457600080fd5b5061080961597e565b348015610fe957600080fd5b5061080961598d565b600060606000606080600080606080600061100b61599c565b600160a060020a03808e1660009081526020819052604090208054909350161515611082576040805160e560020a62461bcd0281526020600482015260376024820152600080516020615c478339815191526044820152600080516020615be7833981519152606482015290519081900360840190fd5b63ffffffff8c166000908152600983016020908152604091829020825161018081018452815460b060020a02600160b060020a0319166101408201908152600180840180548751600261010094831615949094026000190190911692909204601f810187900487028301870190975286825292959394869492938693610160870193928301828280156111565780601f1061112b57610100808354040283529160200191611156565b820191906000526020600020905b81548152906001019060200180831161113957829003601f168201915b505050919092525050508152600282810180546040805160206001841615610100026000190190931694909404601f810183900483028501830190915280845293810193908301828280156111ec5780601f106111c1576101008083540402835291602001916111ec565b820191906000526020600020905b8154815290600101906020018083116111cf57829003601f168201915b5050509183525050600382015460208083019190915260048301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850182528281529401939283018282801561128a5780601f1061125f5761010080835404028352916020019161128a565b820191906000526020600020905b81548152906001019060200180831161126d57829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815293820193929183018282801561131e5780601f106112f35761010080835404028352916020019161131e565b820191906000526020600020905b81548152906001019060200180831161130157829003601f168201915b5050509183525050600682015460ff8082161515602080850191909152610100928390049091161515604080850191909152805160078601805460026001821615909602600019011694909404601f810184900490930281016080908101909252606080820184815295019490939284928491908401828280156113e35780601f106113b8576101008083540402835291602001916113e3565b820191906000526020600020905b8154815290600101906020018083116113c657829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114855780601f1061145a57610100808354040283529160200191611485565b820191906000526020600020905b81548152906001019060200180831161146857829003601f168201915b50505091835250506002919091015460ff9081161515602092830152918352600a9390930154600160f860020a0381169383019390935260f860020a90920490911615156040909101526101208101519091501515611530576040805160e560020a62461bcd02815260206004820152602a6024820152600080516020615c078339815191526044820152600080516020615ba7833981519152606482015290519081900360840190fd5b8154600160a060020a031633148061155c575033600090815260088301602052604090206002015460ff165b156115bc5780600001516000015181602001518260400151836060015184608001518560a001518660c001518760e00151600001518860e00151602001518797508595508494508191508090509a509a509a509a509a509a509a509a509a505b50509295985092959850929598565b6000606080600160a060020a0386163314611632576040805160e560020a62461bcd0281526020600482015260286024820152600080516020615c278339815191526044820152600080516020615bc7833981519152606482015290519081900360840190fd5b84518592506002106116b4576040805160e560020a62461bcd02815260206004820152602960248201527f596f75206d7573742070726f7669646520612076616c696420496e737469747560448201527f74696f6e204e616d650000000000000000000000000000000000000000000000606482015290519081900360840190fd5b508251839060021461175c576040805160e560020a62461bcd02815260206004820152605160248201527f596f75206d7573742070726f7669646520612076616c696420436f756e74727960448201527f20436f64652e20596f75206d75737420666f6c6c6f772049534f2d333136362d60648201527f315f416c70686132205374616e64617264000000000000000000000000000000608482015290519081900360a40190fd5b6040805160608101825286815260208082018790526001828401819052600160a060020a038a1660009081529082529290922081518051929391926117a49284920190615a00565b5060208281015180516117bd9260018501920190615a00565b506040918201516002909101805491151560ff199092169190911790558051600160a060020a03881681529051600194507fe776a6a12f0a3259414e3414d9677e635141c4f64859082b00350e08c3bc8b659181900360200190a150509392505050565b60016020818152600092835260409283902080548451600294821615610100026000190190911693909304601f81018390048302840183019094528383529283918301828280156118b35780601f10611888576101008083540402835291602001916118b3565b820191906000526020600020905b81548152906001019060200180831161189657829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119515780601f1061192657610100808354040283529160200191611951565b820191906000526020600020905b81548152906001019060200180831161193457829003601f168201915b5050506002909301549192505060ff1683565b600060606000806000606080600061197a615a7e565b6000600160f860020a038b16116119db576040805160e560020a62461bcd02815260206004820152601760248201527f5265636f7264204944206d7573742062652076616c6964000000000000000000604482015290519081900360640190fd5b600160f860020a038a166000908152600760205260409020600381015490925060ff161515611a7a576040805160e560020a62461bcd02815260206004820152602160248201527f54686973206f72646572206e756d62657220646f6573206e6f7420657869737460448201527f7300000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b506002810154600160f860020a031660009081526005602090815260409182902082516060810184528154600160a060020a03811680835260a060020a90910463ffffffff1693820193909352600190910154928101929092523314611b50576040805160e560020a62461bcd02815260206004820152602960248201527f4f6e6c79207468652070617469656e742063616e20736565207468697320696e60448201527f666f726d6174696f6e0000000000000000000000000000000000000000000000606482015290519081900360840190fd5b815460018084018054604080516020601f600260001997861615610100029790970190941695909504928301859004850281018501909152818152600160a060020a039094169c509091830182828015611beb5780601f10611bc057610100808354040283529160200191611beb565b820191906000526020600020905b815481529060010190602001808311611bce57829003601f168201915b505050506002848101546004860154600587018054604080516020601f6101006001861615026000190190941697909704928301879004870281018701909152818152969e50600160f860020a0384169d5060f860020a90930460ff169b50909950925090830182828015611ca15780601f10611c7657610100808354040283529160200191611ca1565b820191906000526020600020905b815481529060010190602001808311611c8457829003601f168201915b5050505060068401805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949850919250830182828015611d315780601f10611d0657610100808354040283529160200191611d31565b820191906000526020600020905b815481529060010190602001808311611d1457829003601f168201915b505050505092505050919395979092949650565b60006060611d51615a7e565b611d5961599c565b6000611d63615a9e565b8851899550600a10611de5576040805160e560020a62461bcd02815260206004820152602a60248201527f596f75206d75737420696e666f726d206120636c65617220707572636861736560448201527f20707572706f7365732e00000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160f860020a038a16600090815260056020908152604080832081516060810183528154600160a060020a03811680835260a060020a90910463ffffffff908116838701908152600194850154848701529187528686528487209151168652600901845293829020825161018081018452815460b060020a02600160b060020a031916610140820190815282840180548651600261010097831615979097026000190190911695909504601f8101889004880286018801909652858552969a50909591948694919386936101608701939192909190830182828015611f0c5780601f10611ee157610100808354040283529160200191611f0c565b820191906000526020600020905b815481529060010190602001808311611eef57829003601f168201915b505050919092525050508152600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015611fa25780601f10611f7757610100808354040283529160200191611fa2565b820191906000526020600020905b815481529060010190602001808311611f8557829003601f168201915b5050509183525050600382015460208083019190915260048301805460408051601f600260001961010060018716150201909416939093049283018590048502810185018252828152940193928301828280156120405780601f1061201557610100808354040283529160200191612040565b820191906000526020600020905b81548152906001019060200180831161202357829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156120d45780601f106120a9576101008083540402835291602001916120d4565b820191906000526020600020905b8154815290600101906020018083116120b757829003601f168201915b5050509183525050600682015460ff8082161515602080850191909152610100928390049091161515604080850191909152805160078601805460026001821615909602600019011694909404601f810184900490930281016080908101909252606080820184815295019490939284928491908401828280156121995780601f1061216e57610100808354040283529160200191612199565b820191906000526020600020905b81548152906001019060200180831161217c57829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561223b5780601f106122105761010080835404028352916020019161223b565b820191906000526020600020905b81548152906001019060200180831161221e57829003601f168201915b50505091835250506002919091015460ff9081161515602092830152918352600a9390930154600160f860020a0381169383019390935260f860020a909204909116151560409091015261012081015190935015156122e6576040805160e560020a62461bcd02815260206004820152602a6024820152600080516020615c078339815191526044820152600080516020615ba7833981519152606482015290519081900360840190fd5b8260c001511515612367576040805160e560020a62461bcd02815260206004820152602560248201527f5265636f7264206973206e6f206c6f6e67657220617661696c61626c6520746f60448201527f2073656c6c000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60408401513410156123e9576040805160e560020a62461bcd02815260206004820152603160248201527f546865207265636f72642076616c756520697320686967686572207468616e2060448201527f7468652076616c7565206f666665726564000000000000000000000000000000606482015290519081900360840190fd5b6064600a3402049150600960009054906101000a9004600160a060020a0316600160a060020a03166319ac8c0f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016020604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b50505050506040513d602081101561248957600080fd5b8101908080519060200190929190505050506006600081819054906101000a9004600160f860020a03168092919060010191906101000a815481600160f860020a030219169083600160f860020a0316021790555095506101006040519081016040528033600160a060020a031681526020018a81526020018b600160f860020a031681526020016000151581526020016001151581526020013481526020018981526020018881525090508060076000600660009054906101000a9004600160f860020a0316600160f860020a0316600160f860020a0316815260200190815260200160002060008201518160000160006101000a815481600160a060020a030219169083600160a060020a0316021790555060208201518160010190805190602001906125b9929190615a00565b5060408201516002820180546060850151600160f860020a0319909116600160f860020a039384161790921660f860020a92151592909202919091179055608082015160038201805460ff191691151591909117905560a0820151600482015560c08201518051612634916005840191602090910190615a00565b5060e08201518051612650916006840191602090910190615a00565b505060065460408051346020808301829052600160f860020a0390941692820183905260608083528e51908301528d517fc2dd9e5d42a5f063ffcee033e539b6098a89522caa10c4fded3b7f0799e3f53995508e94919392918291608083019187019080838360005b838110156126d15781810151838201526020016126b9565b50505050905090810190601f1680156126fe5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15050505050949350505050565b6060612724615a9e565b61272c615ae1565b6000600160f860020a0385161161278d576040805160e560020a62461bcd02815260206004820152601660248201527f4f72646572204964206d7573742062652076616c696400000000000000000000604482015290519081900360640190fd5b600160f860020a038416600090815260076020908152604091829020825161010080820185528254600160a060020a03168252600180840180548751600293821615909402600019011691909104601f810186900486028301860190965285825291949293858101939192919083018282801561284b5780601f106128205761010080835404028352916020019161284b565b820191906000526020600020905b81548152906001019060200180831161282e57829003601f168201915b5050509183525050600282810154600160f860020a03811660208085019190915260ff60f860020a909204821615156040808601919091526003860154909216151560608501526004850154608085015260058501805483516000196001831615610100020190911694909404601f810183900483028501830190935282845260a09094019391908301828280156129245780601f106128f957610100808354040283529160200191612924565b820191906000526020600020905b81548152906001019060200180831161290757829003601f168201915b505050918352505060068201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156129b85780601f1061298d576101008083540402835291602001916129b8565b820191906000526020600020905b81548152906001019060200180831161299b57829003601f168201915b505050505081525050915081608001511515612a1e576040805160e560020a62461bcd02815260206004820152601260248201527f4f72646572204964206e6f7420666f756e640000000000000000000000000000604482015290519081900360640190fd5b81606001511515612a79576040805160e560020a62461bcd02815260206004820152601260248201527f4f7264657220776173206e6f7420736f6c640000000000000000000000000000604482015290519081900360640190fd5b8151600160a060020a03163314612b00576040805160e560020a62461bcd02815260206004820152602d60248201527f4f6e6c792062757965722063616e20686176652061636365737320746f20746860448201527f6520696e666f726d6174696f6e00000000000000000000000000000000000000606482015290519081900360840190fd5b600160f860020a03848116600090815260086020908152604091829020825160608101845281549094168452600180820180548551600261010094831615949094026000190190911692909204601f8101859004850283018501909552848252919385840193919291830182828015612bba5780601f10612b8f57610100808354040283529160200191612bba565b820191906000526020600020905b815481529060010190602001808311612b9d57829003601f168201915b50505091835250506002919091015460ff16151560209091015260408101519091501515612c32576040805160e560020a62461bcd02815260206004820152601660248201527f5265636f7264206275796564206e6f7420666f756e6400000000000000000000604482015290519081900360640190fd5b602001519392505050565b600080612c48615b0e565b3360009081526020819052604081208054909350600160a060020a03161515612cbd576040805160e560020a62461bcd0281526020600482015260286024820152600080516020615c278339815191526044820152600080516020615bc7833981519152606482015290519081900360840190fd5b5050604080518082018252600080825282518084018452600180825260fd60020a60208084019190915280850192835263ffffffff891684526009870181529490922060068101805461ff00191690558351815469ffffffffffffffffffff191660b060020a909104178155905180519394919385938593612d459391850192910190615a00565b505060408051808201909152600180825260fd60020a6020909201918252612d739250600284019190615a00565b506001600382018190556040805180820190915281815260fd60020a6020909101908152612da691600484019190615a00565b5060408051808201909152600180825260fd60020a6020909201918252612dd1916005840191615a00565b5060068101805460ff19169055600a81018054600160f860020a0319166001908117600160f860020a03169091559350505050919050565b60006060600080612e1861599c565b8651879450600c10612e74576040805160e560020a62461bcd02815260206004820152601d60248201527f596f75206d7573742070726f7669646520612076616c69642055524c2e000000604482015290519081900360640190fd5b600160a060020a03808a1660009081526020819052604090208054909450161515612eeb576040805160e560020a62461bcd0281526020600482015260376024820152600080516020615c478339815191526044820152600080516020615be7833981519152606482015290519081900360840190fd5b8254600160a060020a0316331461306257600160a060020a03861615801590612f1c5750600160a060020a03861633145b1515612f98576040805160e560020a62461bcd02815260206004820152603460248201527f596f75206d7573742070726f7669646520612076616c69642074686972642d7060448201527f61727479206163636f756e742061646472657373000000000000000000000000606482015290519081900360840190fd5b600160a060020a03861660009081526008840160205260409020600281015490925060ff161515600114613062576040805160e560020a62461bcd02815260206004820152604160248201527f596f75206d7573742070726f7669646520612074686972642d7061727479206160448201527f63636f756e74206164647265737320616c6c6f7765642062792070617469656e60648201527f7400000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b63ffffffff88166000908152600984016020908152604091829020825161018081018452815460b060020a02600160b060020a0319166101408201908152600180840180548751600261010094831615949094026000190190911692909204601f810187900487028301870190975286825292959394869492938693610160870193928301828280156131365780601f1061310b57610100808354040283529160200191613136565b820191906000526020600020905b81548152906001019060200180831161311957829003601f168201915b505050919092525050508152600282810180546040805160206001841615610100026000190190931694909404601f810183900483028501830190915280845293810193908301828280156131cc5780601f106131a1576101008083540402835291602001916131cc565b820191906000526020600020905b8154815290600101906020018083116131af57829003601f168201915b5050509183525050600382015460208083019190915260048301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850182528281529401939283018282801561326a5780601f1061323f5761010080835404028352916020019161326a565b820191906000526020600020905b81548152906001019060200180831161324d57829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156132fe5780601f106132d3576101008083540402835291602001916132fe565b820191906000526020600020905b8154815290600101906020018083116132e157829003601f168201915b5050509183525050600682015460ff8082161515602080850191909152610100928390049091161515604080850191909152805160078601805460026001821615909602600019011694909404601f810184900490930281016080908101909252606080820184815295019490939284928491908401828280156133c35780601f10613398576101008083540402835291602001916133c3565b820191906000526020600020905b8154815290600101906020018083116133a657829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156134655780601f1061343a57610100808354040283529160200191613465565b820191906000526020600020905b81548152906001019060200180831161344857829003601f168201915b50505091835250506002919091015460ff9081161515602092830152918352600a9390930154600160f860020a0381169383019390935260f860020a90920490911615156040909101526101208101519091501515613510576040805160e560020a62461bcd02815260206004820152602a6024820152600080516020615c078339815191526044820152600080516020615ba7833981519152606482015290519081900360840190fd5b63ffffffff881660009081526009840160209081526040909120885161353e926005909201918a0190615a00565b50600683015460408051600160a060020a038c16815263ffffffff909216602083015280517f0ac9654914dc475f5a29f59a14ebb70937da233f8c5d8d3f514557934c5e11949281900390910190a150600198975050505050505050565b600160a060020a038082166000908152602081905260408120805491929091161515613614576040805160e560020a62461bcd0281526020600482015260376024820152600080516020615c478339815191526044820152600080516020615be7833981519152606482015290519081900360840190fd5b8054600160a060020a0316331480613640575033600090815260088201602052604090206002015460ff165b1561365357600681015463ffffffff1691505b50919050565b600080600080600061366961599c565b600160f860020a03871660009081526005602090815260408083208054600160a060020a038116855284845282852060a060020a90910463ffffffff1685526009018352818420825161018081018452815460b060020a02600160b060020a0319166101408201908152600180840180548751600261010094831615949094026000190190911692909204601f8101899004890283018901909752868252979d508d9b508b9a509398509095919486949193869361016087019391929091908301828280156137795780601f1061374e57610100808354040283529160200191613779565b820191906000526020600020905b81548152906001019060200180831161375c57829003601f168201915b505050919092525050508152600282810180546040805160206001841615610100026000190190931694909404601f8101839004830285018301909152808452938101939083018282801561380f5780601f106137e45761010080835404028352916020019161380f565b820191906000526020600020905b8154815290600101906020018083116137f257829003601f168201915b5050509183525050600382015460208083019190915260048301805460408051601f600260001961010060018716150201909416939093049283018590048502810185018252828152940193928301828280156138ad5780601f10613882576101008083540402835291602001916138ad565b820191906000526020600020905b81548152906001019060200180831161389057829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156139415780601f1061391657610100808354040283529160200191613941565b820191906000526020600020905b81548152906001019060200180831161392457829003601f168201915b5050509183525050600682015460ff8082161515602080850191909152610100928390049091161515604080850191909152805160078601805460026001821615909602600019011694909404601f81018490049093028101608090810190925260608082018481529501949093928492849190840182828015613a065780601f106139db57610100808354040283529160200191613a06565b820191906000526020600020905b8154815290600101906020018083116139e957829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613aa85780601f10613a7d57610100808354040283529160200191613aa8565b820191906000526020600020905b815481529060010190602001808311613a8b57829003601f168201915b50505091835250506002919091015460ff9081161515602092830152918352600a9390930154600160f860020a0381169383019390935260f860020a90920490911615156040909101526101208101519091501515613b53576040805160e560020a62461bcd02815260206004820152602a6024820152600080516020615c078339815191526044820152600080516020615ba7833981519152606482015290519081900360840190fd5b8060c001511515613b6357613b87565b8154815151600184015460c0840151600160a060020a039093169850909650945092505b50509193509193565b600080613b9b615b0e565b600954604080517f8af575970000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691638af57597916024808201926060929091908290030181600087803b158015613c0157600080fd5b505af1158015613c15573d6000803e3d6000fd5b505050506040513d6060811015613c2b57600080fd5b5060200151915060008211613cb0576040805160e560020a62461bcd02815260206004820152603460248201527f446576656c6f706572206d75737420626520616c6c6f77656420746f2061646460448201527f206e6577207265636f72642063617465676f7279000000000000000000000000606482015290519081900360840190fd5b600160b060020a031980861660009081526003602052604090205460b060020a021615613d27576040805160e560020a62461bcd02815260206004820152601760248201527f43617465676f727920616c726561647920657869737473000000000000000000604482015290519081900360640190fd5b50604080518082018252600160b060020a031986168082526020808301878152600092835260038252939091208251815469ffffffffffffffffffff191660b060020a90910417815592518051929384939092613d8b926001850192910190615a00565b505060028054600180820183556000929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace600380830491909101805469ffffffffffffffffffff92909306600a026101000a9182021990921660b060020a8a049190910217905560408051600160b060020a03198916815290519195507fb82c2ff3147b32b72f05a863fbbd6cee366ae2bfc42ca85fb03bf32fe4e341c492506020908290030190a1505092915050565b6000606080600160a060020a0389161515613ea6576040805160e560020a62461bcd0281526020600482015260286024820152600080516020615c278339815191526044820152600080516020615bc7833981519152606482015290519081900360840190fd5b8751889250600910613f28576040805160e560020a62461bcd02815260206004820152603e60248201527f596f75206d7573742070726f7669646520612076616c696420646174652e204960448201527f74206d75737420666f6c6c6f772052464333333339207374616e646172640000606482015290519081900360840190fd5b5085518690600114613faa576040805160e560020a62461bcd02815260206004820152602b60248201527f596f75206d7573742070726f76696465204d20666f72206d616b65206f72204660448201527f20666f722066656d616c65000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040805161010081018252600160a060020a038b811680835260208084018d81528486018d9052606085018c90527fffff0000000000000000000000000000000000000000000000000000000000008b16608086015260a085018a9052600160c0860181905260e086018190526000938452838352959092208451815473ffffffffffffffffffffffffffffffffffffffff19169416939093178355905180519394929361405f938501929190910190615a00565b506040820151805161407b916002840191602090910190615a00565b5060608201518051614097916003840191602090910190615a00565b50608082015160048201805461ffff19167e0100000000000000000000000000000000000000000000000000000000000090920491909117905560a082015180516140ec916005840191602090910190615a00565b5060c082015160068201805463ffffffff191663ffffffff90921691909117905560e09091015160079091018054600160f860020a031916600160f860020a0390921691909117905560408051600160a060020a038b16815290517f5f63f2f87a393587b9c452b80d6054b3a8a0178e325e9c8a2bb1aa8b1158c775916020908290030190a150600198975050505050505050565b6000806060600080614191615b26565b61419961599c565b600160b060020a03198b166000908152600360205260409020955089518a955060091061425c576040805160e560020a62461bcd02815260206004820152604660248201527f596f75206d7573742070726f7669646520612076616c69642064617465206f6660448201527f20666163742e204974206d75737420666f6c6c6f77205246433333333920737460648201527f616e646172640000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600160a060020a03808d16600090815260208190526040902080549095501615156142d3576040805160e560020a62461bcd0281526020600482015260376024820152600080516020615c478339815191526044820152600080516020615be7833981519152606482015290519081900360840190fd5b60408051608081018252600060608201818152825282516020818101855282825283015291810191909152845460019450909250600160a060020a031633146145ca57600160a060020a038816158015906143365750600160a060020a03881633145b15156143b2576040805160e560020a62461bcd02815260206004820152603460248201527f596f75206d7573742070726f7669646520612076616c69642074686972642d7060448201527f61727479206163636f756e742061646472657373000000000000000000000000606482015290519081900360840190fd5b600160a060020a03881660009081526008850160209081526040918290208251815460026001821615610100026000190190911604601f8101849004909302810160809081019094526060810183815290939192849284919084018282801561445c5780601f106144315761010080835404028352916020019161445c565b820191906000526020600020905b81548152906001019060200180831161443f57829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156144fe5780601f106144d3576101008083540402835291602001916144fe565b820191906000526020600020905b8154815290600101906020018083116144e157829003601f168201915b50505091835250506002919091015460ff161515602090910152604081015190925015156001146145c5576040805160e560020a62461bcd02815260206004820152604160248201527f596f75206d7573742070726f7669646520612074686972642d7061727479206160448201527f63636f756e74206164647265737320616c6c6f7765642062792070617469656e60648201527f7400000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600092505b60068401805463ffffffff198116600163ffffffff9283168101909216179091556040805161018081018252885460b060020a02600160b060020a0319166101408201908152898401805484516020600261010098841615989098026000190190921696909604601f81018290048202870182019095528486529294859492938c93610160870193918301828280156146a45780601f10614679576101008083540402835291602001916146a4565b820191906000526020600020905b81548152906001019060200180831161468757829003601f168201915b50505091909252505050815260208082018d905242604080840191909152606083018d9052805180830182526000808252608085019190915287151560a085015260c0840181905260e0840187905261010084018190526001610120909401849052600689015463ffffffff1681526009890183522083518051825469ffffffffffffffffffff191660b060020a90910417825580830151805195965086959294919385936147599385019290910190615a00565b50505060208281015180516147749260028501920190615a00565b50604082015160038201556060820151805161479a916004840191602090910190615a00565b50608082015180516147b6916005840191602090910190615a00565b5060a082015160068201805460c085015115156101000261ff001993151560ff19909216919091179290921691909117905560e082015180518051600784019161480591839160200190615a00565b50602082810151805161481e9260018501920190615a00565b506040918201516002909101805491151560ff19909216919091179055610100830151600a909201805461012090940151151560f860020a02600160f860020a03938416600160f860020a03199095169490941790921692909217905560068501548151600160a060020a038f16815263ffffffff909116602082015281517f2cc2823886384082b5f82bd5342c8ed9d63754b21a0f9648db1584936a640a73929181900390910190a15050506006015463ffffffff1698975050505050505050565b33600090815260208190526040812080548290600160a060020a03161515614955576040805160e560020a62461bcd0281526020600482015260286024820152600080516020615c278339815191526044820152600080516020615bc7833981519152606482015290519081900360840190fd5b5063ffffffff92909216600090815260099092016020525060409020600601805461ff0019169055600190565b6002545b90565b600080614994615a7e565b600061499e615ae1565b6000600160f860020a038916116149ff576040805160e560020a62461bcd02815260206004820152601760248201527f5265636f7264204944206d7573742062652076616c6964000000000000000000604482015290519081900360640190fd5b600160f860020a0388166000908152600760205260409020600381015490945060ff161515614a315760009450614cff565b600284015460f860020a900460ff1615614abb576040805160e560020a62461bcd02815260206004820152602360248201527f546865206f7264657220686173206265656e20616c726561647920616363657060448201527f7465640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002840154600160f860020a031660009081526005602090815260409182902082516060810184528154600160a060020a03811680835260a060020a90910463ffffffff1693820193909352600190910154928101929092529093503314614b93576040805160e560020a62461bcd02815260206004820152602760248201527f4f6e6c79207468652070617469656e742063616e20617574686f72697a65207460448201527f68652073656c6c00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6004840154606490605a028451604051929091049350600160a060020a03169083156108fc029084906000818181858888f19350505050158015614bdb573d6000803e3d6000fd5b50600284018054600160f860020a0390811660f860020a1790915560408051606081018252918a16825280516020601f8a01819004810282018101909252888152818301918a908a9081908401838280828437505050928452505060016020928301819052600160f860020a038c81166000908152600885526040902085518154600160f860020a031916921691909117815584840151805195965086959194614c8b9450928501920190615a00565b506040918201516002909101805491151560ff1990921691909117905583518151600160a060020a03909116815260208101849052600160f860020a038a168183015290517f146aa644f7f6e1393dd98eb20461be2f4b0cfa73485057e8b4eae2afee8d07bf9181900360600190a1600194505b505050509392505050565b600080614d15615b26565b3360009081526020819052604090208054909250600160a060020a03161515614d8a576040805160e560020a62461bcd0281526020600482015260286024820152600080516020615c278339815191526044820152600080516020615bc7833981519152606482015290519081900360840190fd5b600160a060020a0384166000908152600160208181526040928390208351815460029481161561010002600019011693909304601f810183900490920283016080908101909452606083018281529293909284929091849190840182828015614e345780601f10614e0957610100808354040283529160200191614e34565b820191906000526020600020905b815481529060010190602001808311614e1757829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614ed65780601f10614eab57610100808354040283529160200191614ed6565b820191906000526020600020905b815481529060010190602001808311614eb957829003601f168201915b50505091835250506002919091015460ff16151560209091015260408101519091501515600114614f77576040805160e560020a62461bcd02815260206004820152602b60248201527f596f75206d7573742070726f7669646520612076616c69642054686972642d5060448201527f6172747920697373756572000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03841660009081526008830160209081526040909120825180518493614fa8928492910190615a00565b506020828101518051614fc19260018501920190615a00565b50604091909101516002909101805460ff19169115159190911790555060019392505050565b600160b060020a031981166000908152600360209081526040918290208054600191820180548551600261010095831615959095026000190190911693909304601f810185900485028401850190955284835260b060020a909102936060938301828280156150975780601f1061506c57610100808354040283529160200191615097565b820191906000526020600020905b81548152906001019060200180831161507a57829003601f168201915b50505050509050915091565b6000806150ae615b26565b3360009081526020819052604090208054909250600160a060020a03161515615123576040805160e560020a62461bcd0281526020600482015260286024820152600080516020615c278339815191526044820152600080516020615bc7833981519152606482015290519081900360840190fd5b600160a060020a0384166000908152600160208181526040928390208351815460029481161561010002600019011693909304601f8101839004909202830160809081019094526060830182815292939092849290918491908401828280156151cd5780601f106151a2576101008083540402835291602001916151cd565b820191906000526020600020905b8154815290600101906020018083116151b057829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561526f5780601f106152445761010080835404028352916020019161526f565b820191906000526020600020905b81548152906001019060200180831161525257829003601f168201915b50505091835250506002919091015460ff16151560209091015260408101519091501515600114615310576040805160e560020a62461bcd02815260206004820152602b60248201527f596f75206d7573742070726f7669646520612076616c69642054686972642d5060448201527f6172747920697373756572000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03841660009081526008830160205260408120906153358282615b45565b615343600183016000615b45565b50600201805460ff191690555060019392505050565b6000806000615366615a7e565b3360009081526020819052604090208054909350600160a060020a031615156153db576040805160e560020a62461bcd0281526020600482015260286024820152600080516020615c278339815191526044820152600080516020615bc7833981519152606482015290519081900360840190fd5b655af3107a400067ffffffffffffffff86161015615469576040805160e560020a62461bcd02815260206004820152603060248201527f54686520707269636520736574206973206c6f776572207468616e207468652060448201527f6d696e696e756d20726571756972656400000000000000000000000000000000606482015290519081900360840190fd5b63ffffffff861660009081526009840160205260409020600a81015490925060f860020a900460ff1615156154ea576040805160e560020a62461bcd02815260206004820152602a6024820152600080516020615c078339815191526044820152600080516020615ba7833981519152606482015290519081900360840190fd5b5060408051606080820183528454600160a060020a03908116835263ffffffff898116602080860191825267ffffffffffffffff8b1686880181815260048054600160f860020a03198082166001600160f860020a0393841681810185169290921780865584166000908152600589528e90208d5181549a5173ffffffffffffffffffffffffffffffffffffffff19909b169c169b909b1777ffffffff0000000000000000000000000000000000000000191660a060020a99909a16989098029890981789559251979095019690965560068a01805461010061ff0019909116179055600a8a0180549091168517905588549454885160b060020a909602600160b060020a0319168652918501521682860152935193965091927f8844b31144872699bbd5e87ced0a59f7643b2e958088ca0d8e6818b84479983f9281900390910190a150505092915050565b600160a060020a0381811660009081526020819052604081205460609283928392909183911615156156b5576040805160e560020a62461bcd0281526020600482015260286024820152600080516020615c278339815191526044820152600080516020615bc7833981519152606482015290519081900360840190fd5b600160a060020a03861660009081526020818152604091829020600190810180548451600293821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156157555780601f1061572a57610100808354040283529160200191615755565b820191906000526020600020905b81548152906001019060200180831161573857829003601f168201915b50505050600160a060020a038816600090815260208181526040918290206002908101805484516001821615610100026000190190911692909204601f81018490048402830184019094528382529499509392508301828280156157fa5780601f106157cf576101008083540402835291602001916157fa565b820191906000526020600020905b8154815290600101906020018083116157dd57829003601f168201915b50505050600160a060020a038816600090815260208181526040918290206003018054835160026001831615610100026000190190921691909104601f8101849004840282018401909452838152949850925083018282801561589e5780601f106158735761010080835404028352916020019161589e565b820191906000526020600020905b81548152906001019060200180831161588157829003601f168201915b50505050600160a060020a03881660009081526020818152604091829020600481015460059091018054845160026101006001841615026000190190921691909104601f81018590048502820185019095528481529598507e010000000000000000000000000000000000000000000000000000000000009091029650925083018282801561596e5780601f106159435761010080835404028352916020019161596e565b820191906000526020600020905b81548152906001019060200180831161595157829003601f168201915b5050505050905091939590929450565b600454600160f860020a031681565b600654600160f860020a031681565b6101a0604051908101604052806159b1615b0e565b8152602001606081526020016000815260200160608152602001606081526020016000151581526020016000151581526020016159ec615b26565b815260006020820181905260409091015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a4157805160ff1916838001178555615a6e565b82800160010185558215615a6e579182015b82811115615a6e578251825591602001919060010190615a53565b50615a7a929150615b8c565b5090565b604080516060810182526000808252602082018190529181019190915290565b604080516101008101825260008082526060602083018190529282018190528282018190526080820181905260a082015260c0810182905260e081019190915290565b6060604051908101604052806000600160f860020a03168152602001606081526020016000151581525090565b60408051808201909152600081526060602082015290565b6040805160608181018352808252602082015260009181019190915290565b50805460018160011615610100020316600290046000825580601f10615b6b5750615b89565b601f016020900490600052602060002090810190615b899190615b8c565b50565b61498691905b80821115615a7a5760008155600101615b925600207265636f7264204944000000000000000000000000000000000000000000002061646472657373000000000000000000000000000000000000000000000000647920657869737473206f6e20426c6f636b636861696e000000000000000000596f75206d7573742070726f7669646520612076616c6964206d65646963616c596f75206d7573742070726f7669646520612076616c6964206163636f756e74596f75206d7573742070726f7669646520612070617469656e7420616c726561a165627a7a72305820dc1c5c70f7322ab1435a76f674234a9c801007dd485d3fda2dd18ad258deb6100029000000000000000000000000bed668f915ced99ccabe607689c4fd8208c13d4d

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

000000000000000000000000bed668f915ced99ccabe607689c4fd8208c13d4d

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000bed668f915ced99ccabe607689c4fd8208c13d4d

Swarm Source

bzzr://dc1c5c70f7322ab1435a76f674234a9c801007dd485d3fda2dd18ad258deb610
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward