Sponsored:   Ubex.com - Token sale will end in just 4 days. 98% hard cap already reached. Don't Miss Out!
Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 159 txns
 Latest 25 txns From a total of 159 Transactions

TxHash Age From To Value [TxFee]
0xe72cf52d2ed6b85f8b7eeaa95315b7dd0b5db08575918e633a87842a362290a494 days 8 hrs agoOraclize  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.000098144
0x053025660bf97aa266e12baf45e2591b6b8841d57c6b9ce4c93baefd11e1bd9694 days 9 hrs agoOraclize  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.000098144
0xbf6d451edd2eab85c3292ac61625febc52b87dcc5d773969222872184c017e74113 days 5 hrs ago0x35c5091ebfacce007ed8933f0b415cab498c48d0  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.000284802
0x16bfb33bc2dc85c2a6a6c8355d727982a8e854b1478f11af395fca1a75381a3b113 days 5 hrs ago0x35c5091ebfacce007ed8933f0b415cab498c48d0  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.000659589
0x940f49b6f8ec3fedb5aacd861f3bb8cf0b652f8f9d75d92f258201282687d60a113 days 6 hrs ago0x35c5091ebfacce007ed8933f0b415cab498c48d0  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.001184589
0x048a99e0e9420aa56e02d5e8f965266adede32a44ea824c33ccbe7d02e8755c9113 days 7 hrs ago0x35c5091ebfacce007ed8933f0b415cab498c48d0  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.0006269
0x92c64df913d54074dc5828c0d590d9a2740dfb2a78a8cb87f6972acd3f9d69c6113 days 7 hrs ago0x35c5091ebfacce007ed8933f0b415cab498c48d0  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.0006269
0x26b032c9c70216a017238914f4263367c7ed9de506864b0c1e9b3c4642f541af115 days 2 hrs ago0xeaf85a0a3b2c311673a7936412e7758506b19f8a  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.02 Ether0.001335943
0x6b5050f541e50b7bee85be4fe34c4d64b84a0f1b036c0920d62300659502891b115 days 2 hrs ago0xeaf85a0a3b2c311673a7936412e7758506b19f8a  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.005 Ether0.00010945
0x67fddc64ba48e78b9104d786166b14c1ed2d894e4a417d2e0245891d2e10de1a115 days 8 hrs ago0xbe358bd807d11a36e4637766dddc6f47554ef971  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.00291035 Ether0.00026268
0xc398b591b5effa1188618f58789231b812166b08f477b8e01eb293cec98fef91115 days 17 hrs ago0xeaf85a0a3b2c311673a7936412e7758506b19f8a  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.05 Ether0.0010496695
0x4e06ec7cf905a7aaf68ff4ebc5fa0bd13bc47cc834e57f7f4fa4612939143e84116 days 7 hrs agoOraclize  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.001040532
0xa2e9301f161a56ceb2a12bf745179ff79de2fa1512b331c8842ed1810227bcf5116 days 7 hrs agoOraclize  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.00052404
0xecbb0b6e0b105ab9d0e2447eca7769134ed079069e6bf5b9b64da06a3ccdc511116 days 10 hrs ago0x6428d3549a304cd2433025774a533a27ce20015e  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.021 Ether0.009733299
0xe3ed351dd2910170df71cac9a0a0ca8613d772597f5f29cacffbffe7ae9582c2117 days 2 hrs ago0x05034d289f831e4983f6be1b0d279a7c40945fee  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.01 Ether0.004007829
0x34ca4a8cb272301b539aef309f011d0353c3bfeb7db55454e973d2871e3390bc128 days 15 hrs agoOraclize  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.001158912
0xd97913f44d21309f13a93c909a3da7f6f1780e0abba60e64f319aae3f3a18fa1132 days 49 mins ago0xc719bc3909e2e5da1cd1336336165792151095f9  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.047386 Ether0.004007829
0xbc81a3a831b881c3a941e28cc43ef9e1f8f8b9f4b984ef95ff3e6eecb3a85108136 days 5 hrs agoOraclize  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.000344076
0x5ab29dd740f1d89faf7017cec79b2bdf73887da62039eb895b24a10ed2de2fac136 days 7 hrs ago0x4352a31b3a78bd484d86e867c460b9adb881c0fe  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.01 Ether0.000954245
0xa400eeadf3e2cafa8c9661d7de5903ff53cba844f98ded3c8fd4a7136a47076b142 days 10 hrs agoOraclize  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.00017204
0xf1ce26cbdbadd38f99ccf8d303ed7b8fa838e6677c770479ee2fff9fa0896cb4142 days 10 hrs ago0x884ecf7f2fb9d5086684fdf38ffbd85e19af0f81  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.07 Ether0.000763396
0x0bb1ea800b506fb08026da872b0a3524d0fa6728dc51e1e03c510660dff9d1c3142 days 14 hrs agoOraclize  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.000371808
0xc7ccf94b5bbe14a16b00507bcd48568d8055e808ffa59db021c58b2fe1a35ac0142 days 14 hrs agoOraclize  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20 Ether0.000396556
0x4ffa82de14d48c94ca772e82e78cf5584ef721d75dda6f812f698e0942ba7d29142 days 14 hrs ago0x884ecf7f2fb9d5086684fdf38ffbd85e19af0f81  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.025 Ether0.000572547
0xa03871132e5a6481ce9c3ac782e293ef49a3af64c75cb04a22e00b0a3eb2ca6c142 days 14 hrs ago0x884ecf7f2fb9d5086684fdf38ffbd85e19af0f81  IN   0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20.01 Ether0.000381698
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click Here To View More View All
ParentTxHash Block Age From To Value
0xbf6d451edd2eab85c3292ac61625febc52b87dcc5d773969222872184c017e745732295113 days 5 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x35c5091ebfacce007ed8933f0b415cab498c48d00.12168695476813102 Ether
0x16bfb33bc2dc85c2a6a6c8355d727982a8e854b1478f11af395fca1a75381a3b5732278113 days 5 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x16dc75b56cf2092e2760331b8fb244284cf8e3018.7 Ether
0x940f49b6f8ec3fedb5aacd861f3bb8cf0b652f8f9d75d92f258201282687d60a5732228113 days 6 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x16dc75b56cf2092e2760331b8fb244284cf8e3011 Ether
0x048a99e0e9420aa56e02d5e8f965266adede32a44ea824c33ccbe7d02e8755c95731810113 days 7 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20xeaf85a0a3b2c311673a7936412e7758506b19f8a0.02 Ether
0x92c64df913d54074dc5828c0d590d9a2740dfb2a78a8cb87f6972acd3f9d69c65731787113 days 7 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20xeaf85a0a3b2c311673a7936412e7758506b19f8a0.05 Ether
0x26b032c9c70216a017238914f4263367c7ed9de506864b0c1e9b3c4642f541af5721868115 days 2 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x0d84a6f4a28679ebfa58d38a3f3a5598def4f4830.004 Ether
0x26b032c9c70216a017238914f4263367c7ed9de506864b0c1e9b3c4642f541af5721868115 days 2 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00082667174690816 Ether
0xc398b591b5effa1188618f58789231b812166b08f477b8e01eb293cec98fef915718326115 days 17 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x0d84a6f4a28679ebfa58d38a3f3a5598def4f4830.01 Ether
0xc398b591b5effa1188618f58789231b812166b08f477b8e01eb293cec98fef915718326115 days 17 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00082667174690816 Ether
0xecbb0b6e0b105ab9d0e2447eca7769134ed079069e6bf5b9b64da06a3ccdc5115714232116 days 10 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x0d84a6f4a28679ebfa58d38a3f3a5598def4f4830.0042 Ether
0xecbb0b6e0b105ab9d0e2447eca7769134ed079069e6bf5b9b64da06a3ccdc5115714232116 days 10 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00082667174690816 Ether
0xe3ed351dd2910170df71cac9a0a0ca8613d772597f5f29cacffbffe7ae9582c25710570117 days 2 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x0d84a6f4a28679ebfa58d38a3f3a5598def4f4830.002 Ether
0xe3ed351dd2910170df71cac9a0a0ca8613d772597f5f29cacffbffe7ae9582c25710570117 days 2 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00082667174690816 Ether
0x34ca4a8cb272301b539aef309f011d0353c3bfeb7db55454e973d2871e3390bc5645256128 days 15 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20xc719bc3909e2e5da1cd1336336165792151095f90.0521246 Ether
0xd97913f44d21309f13a93c909a3da7f6f1780e0abba60e64f319aae3f3a18fa15626236132 days 49 mins ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x0d84a6f4a28679ebfa58d38a3f3a5598def4f4830.0094772 Ether
0xd97913f44d21309f13a93c909a3da7f6f1780e0abba60e64f319aae3f3a18fa15626236132 days 49 mins ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00082667174690816 Ether
0x5ab29dd740f1d89faf7017cec79b2bdf73887da62039eb895b24a10ed2de2fac5601913136 days 7 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x0d84a6f4a28679ebfa58d38a3f3a5598def4f4830.002 Ether
0x5ab29dd740f1d89faf7017cec79b2bdf73887da62039eb895b24a10ed2de2fac5601913136 days 7 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00082667174690816 Ether
0xf1ce26cbdbadd38f99ccf8d303ed7b8fa838e6677c770479ee2fff9fa0896cb45566711142 days 10 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x0d84a6f4a28679ebfa58d38a3f3a5598def4f4830.014 Ether
0xf1ce26cbdbadd38f99ccf8d303ed7b8fa838e6677c770479ee2fff9fa0896cb45566711142 days 10 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00082667174690816 Ether
0x0bb1ea800b506fb08026da872b0a3524d0fa6728dc51e1e03c510660dff9d1c35565621142 days 14 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x884ecf7f2fb9d5086684fdf38ffbd85e19af0f810.05 Ether
0xc7ccf94b5bbe14a16b00507bcd48568d8055e808ffa59db021c58b2fe1a35ac05565620142 days 14 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x884ecf7f2fb9d5086684fdf38ffbd85e19af0f810.011 Ether
0x4ffa82de14d48c94ca772e82e78cf5584ef721d75dda6f812f698e0942ba7d295565617142 days 14 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x0d84a6f4a28679ebfa58d38a3f3a5598def4f4830.005 Ether
0x4ffa82de14d48c94ca772e82e78cf5584ef721d75dda6f812f698e0942ba7d295565617142 days 14 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00082667174690816 Ether
0xa03871132e5a6481ce9c3ac782e293ef49a3af64c75cb04a22e00b0a3eb2ca6c5565616142 days 14 hrs ago0xfeac34425a3ba2fafbbeedb367ac5f4b4bb701d20x0d84a6f4a28679ebfa58d38a3f3a5598def4f4830.002 Ether
[ Download CSV Export  ] 
Contract Self Destruct Called At TxHash 0xbf6d451edd2eab85c3292ac61625febc52b87dcc5d773969222872184c017e74

Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Jackypot
Compiler Text: v0.4.16+commit.d7661dd9
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.16;

// <ORACLIZE_API>
/*
Copyright (c) 2015-2016 Oraclize SRL
Copyright (c) 2016 Oraclize LTD



Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:



The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.



THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/



contract OraclizeI {
    address public cbAddress;
    function query(uint _timestamp, string _datasource, string _arg) payable returns (bytes32 _id);
    function query_withGasLimit(uint _timestamp, string _datasource, string _arg, uint _gaslimit) payable returns (bytes32 _id);
    function query2(uint _timestamp, string _datasource, string _arg1, string _arg2) payable returns (bytes32 _id);
    function query2_withGasLimit(uint _timestamp, string _datasource, string _arg1, string _arg2, uint _gaslimit) payable returns (bytes32 _id);
    function queryN(uint _timestamp, string _datasource, bytes _argN) payable returns (bytes32 _id);
    function queryN_withGasLimit(uint _timestamp, string _datasource, bytes _argN, uint _gaslimit) payable returns (bytes32 _id);
    function getPrice(string _datasource) returns (uint _dsprice);
    function getPrice(string _datasource, uint gaslimit) returns (uint _dsprice);
    function useCoupon(string _coupon);
    function setProofType(byte _proofType);
    function setConfig(bytes32 _config);
    function setCustomGasPrice(uint _gasPrice);
    function randomDS_getSessionPubKeyHash() returns(bytes32);
}
contract OraclizeAddrResolverI {
    function getAddress() returns (address _addr);
}
contract usingOraclize {
    uint constant day = 60*60*24;
    uint constant week = 60*60*24*7;
    uint constant month = 60*60*24*30;
    byte constant proofType_NONE = 0x00;
    byte constant proofType_TLSNotary = 0x10;
    byte constant proofType_Android = 0x20;
    byte constant proofType_Ledger = 0x30;
    byte constant proofType_Native = 0xF0;
    byte constant proofStorage_IPFS = 0x01;
    uint8 constant networkID_auto = 0;
    uint8 constant networkID_mainnet = 1;
    uint8 constant networkID_testnet = 2;
    uint8 constant networkID_morden = 2;
    uint8 constant networkID_consensys = 161;

    OraclizeAddrResolverI OAR;

    OraclizeI oraclize;
    modifier oraclizeAPI {
        if((address(OAR)==0)||(getCodeSize(address(OAR))==0))
            oraclize_setNetwork(networkID_auto);

        if(address(oraclize) != OAR.getAddress())
            oraclize = OraclizeI(OAR.getAddress());

        _;
    }
    modifier coupon(string code){
        oraclize = OraclizeI(OAR.getAddress());
        oraclize.useCoupon(code);
        _;
    }

    function oraclize_setNetwork(uint8 networkID) internal returns(bool){
        if (getCodeSize(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed)>0){ //mainnet
            OAR = OraclizeAddrResolverI(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed);
            oraclize_setNetworkName("eth_mainnet");
            return true;
        }
        if (getCodeSize(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1)>0){ //ropsten testnet
            OAR = OraclizeAddrResolverI(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1);
            oraclize_setNetworkName("eth_ropsten3");
            return true;
        }
        if (getCodeSize(0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e)>0){ //kovan testnet
            OAR = OraclizeAddrResolverI(0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e);
            oraclize_setNetworkName("eth_kovan");
            return true;
        }
        if (getCodeSize(0x146500cfd35B22E4A392Fe0aDc06De1a1368Ed48)>0){ //rinkeby testnet
            OAR = OraclizeAddrResolverI(0x146500cfd35B22E4A392Fe0aDc06De1a1368Ed48);
            oraclize_setNetworkName("eth_rinkeby");
            return true;
        }
        if (getCodeSize(0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475)>0){ //ethereum-bridge
            OAR = OraclizeAddrResolverI(0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475);
            return true;
        }
        if (getCodeSize(0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF)>0){ //ether.camp ide
            OAR = OraclizeAddrResolverI(0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF);
            return true;
        }
        if (getCodeSize(0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA)>0){ //browser-solidity
            OAR = OraclizeAddrResolverI(0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA);
            return true;
        }
        return false;
    }

    function __callback(bytes32 myid, string result) {
        __callback(myid, result, new bytes(0));
    }
    function __callback(bytes32 myid, string result, bytes proof) {
    }

    function oraclize_useCoupon(string code) oraclizeAPI internal {
        oraclize.useCoupon(code);
    }

    function oraclize_getPrice(string datasource) oraclizeAPI internal returns (uint){
        return oraclize.getPrice(datasource);
    }

    function oraclize_getPrice(string datasource, uint gaslimit) oraclizeAPI internal returns (uint){
        return oraclize.getPrice(datasource, gaslimit);
    }

    function oraclize_query(string datasource, string arg) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query.value(price)(0, datasource, arg);
    }
    function oraclize_query(uint timestamp, string datasource, string arg) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query.value(price)(timestamp, datasource, arg);
    }
    function oraclize_query(uint timestamp, string datasource, string arg, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query_withGasLimit.value(price)(timestamp, datasource, arg, gaslimit);
    }
    function oraclize_query(string datasource, string arg, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query_withGasLimit.value(price)(0, datasource, arg, gaslimit);
    }
    function oraclize_query(string datasource, string arg1, string arg2) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query2.value(price)(0, datasource, arg1, arg2);
    }
    function oraclize_query(uint timestamp, string datasource, string arg1, string arg2) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query2.value(price)(timestamp, datasource, arg1, arg2);
    }
    function oraclize_query(uint timestamp, string datasource, string arg1, string arg2, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query2_withGasLimit.value(price)(timestamp, datasource, arg1, arg2, gaslimit);
    }
    function oraclize_query(string datasource, string arg1, string arg2, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query2_withGasLimit.value(price)(0, datasource, arg1, arg2, gaslimit);
    }
    function oraclize_query(string datasource, string[] argN) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN.value(price)(0, datasource, args);
    }
    function oraclize_query(uint timestamp, string datasource, string[] argN) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN.value(price)(timestamp, datasource, args);
    }
    function oraclize_query(uint timestamp, string datasource, string[] argN, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN_withGasLimit.value(price)(timestamp, datasource, args, gaslimit);
    }
    function oraclize_query(string datasource, string[] argN, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN_withGasLimit.value(price)(0, datasource, args, gaslimit);
    }
    function oraclize_query(string datasource, string[1] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[1] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[1] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[1] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_query(string datasource, string[2] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[2] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[2] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[2] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[3] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[3] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[3] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[3] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_query(string datasource, string[4] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[4] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[4] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[4] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[5] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[5] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[5] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[5] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, bytes[] argN) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        bytes memory args = ba2cbor(argN);
        return oraclize.queryN.value(price)(0, datasource, args);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[] argN) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        bytes memory args = ba2cbor(argN);
        return oraclize.queryN.value(price)(timestamp, datasource, args);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[] argN, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        bytes memory args = ba2cbor(argN);
        return oraclize.queryN_withGasLimit.value(price)(timestamp, datasource, args, gaslimit);
    }
    function oraclize_query(string datasource, bytes[] argN, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        bytes memory args = ba2cbor(argN);
        return oraclize.queryN_withGasLimit.value(price)(0, datasource, args, gaslimit);
    }
    function oraclize_query(string datasource, bytes[1] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](1);
        dynargs[0] = args[0];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[1] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](1);
        dynargs[0] = args[0];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[1] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](1);
        dynargs[0] = args[0];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, bytes[1] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](1);
        dynargs[0] = args[0];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_query(string datasource, bytes[2] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[2] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[2] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, bytes[2] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, bytes[3] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[3] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[3] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, bytes[3] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_query(string datasource, bytes[4] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[4] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[4] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, bytes[4] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, bytes[5] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[5] args) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, bytes[5] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, bytes[5] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        bytes[] memory dynargs = new bytes[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_cbAddress() oraclizeAPI internal returns (address){
        return oraclize.cbAddress();
    }
    function oraclize_setProof(byte proofP) oraclizeAPI internal {
        return oraclize.setProofType(proofP);
    }
    function oraclize_setCustomGasPrice(uint gasPrice) oraclizeAPI internal {
        return oraclize.setCustomGasPrice(gasPrice);
    }
    function oraclize_setConfig(bytes32 config) oraclizeAPI internal {
        return oraclize.setConfig(config);
    }

    function oraclize_randomDS_getSessionPubKeyHash() oraclizeAPI internal returns (bytes32){
        return oraclize.randomDS_getSessionPubKeyHash();
    }

    function getCodeSize(address _addr) constant internal returns(uint _size) {
        assembly {
            _size := extcodesize(_addr)
        }
    }

    function parseAddr(string _a) internal returns (address){
        bytes memory tmp = bytes(_a);
        uint160 iaddr = 0;
        uint160 b1;
        uint160 b2;
        for (uint i=2; i<2+2*20; i+=2){
            iaddr *= 256;
            b1 = uint160(tmp[i]);
            b2 = uint160(tmp[i+1]);
            if ((b1 >= 97)&&(b1 <= 102)) b1 -= 87;
            else if ((b1 >= 65)&&(b1 <= 70)) b1 -= 55;
            else if ((b1 >= 48)&&(b1 <= 57)) b1 -= 48;
            if ((b2 >= 97)&&(b2 <= 102)) b2 -= 87;
            else if ((b2 >= 65)&&(b2 <= 70)) b2 -= 55;
            else if ((b2 >= 48)&&(b2 <= 57)) b2 -= 48;
            iaddr += (b1*16+b2);
        }
        return address(iaddr);
    }

    function strCompare(string _a, string _b) internal returns (int) {
        bytes memory a = bytes(_a);
        bytes memory b = bytes(_b);
        uint minLength = a.length;
        if (b.length < minLength) minLength = b.length;
        for (uint i = 0; i < minLength; i ++)
            if (a[i] < b[i])
                return -1;
            else if (a[i] > b[i])
                return 1;
        if (a.length < b.length)
            return -1;
        else if (a.length > b.length)
            return 1;
        else
            return 0;
    }

    function indexOf(string _haystack, string _needle) internal returns (int) {
        bytes memory h = bytes(_haystack);
        bytes memory n = bytes(_needle);
        if(h.length < 1 || n.length < 1 || (n.length > h.length))
            return -1;
        else if(h.length > (2**128 -1))
            return -1;
        else
        {
            uint subindex = 0;
            for (uint i = 0; i < h.length; i ++)
            {
                if (h[i] == n[0])
                {
                    subindex = 1;
                    while(subindex < n.length && (i + subindex) < h.length && h[i + subindex] == n[subindex])
                    {
                        subindex++;
                    }
                    if(subindex == n.length)
                        return int(i);
                }
            }
            return -1;
        }
    }

    function strConcat(string _a, string _b, string _c, string _d, string _e) internal returns (string) {
        bytes memory _ba = bytes(_a);
        bytes memory _bb = bytes(_b);
        bytes memory _bc = bytes(_c);
        bytes memory _bd = bytes(_d);
        bytes memory _be = bytes(_e);
        string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);
        bytes memory babcde = bytes(abcde);
        uint k = 0;
        for (uint i = 0; i < _ba.length; i++) babcde[k++] = _ba[i];
        for (i = 0; i < _bb.length; i++) babcde[k++] = _bb[i];
        for (i = 0; i < _bc.length; i++) babcde[k++] = _bc[i];
        for (i = 0; i < _bd.length; i++) babcde[k++] = _bd[i];
        for (i = 0; i < _be.length; i++) babcde[k++] = _be[i];
        return string(babcde);
    }

    function strConcat(string _a, string _b, string _c, string _d) internal returns (string) {
        return strConcat(_a, _b, _c, _d, "");
    }

    function strConcat(string _a, string _b, string _c) internal returns (string) {
        return strConcat(_a, _b, _c, "", "");
    }

    function strConcat(string _a, string _b) internal returns (string) {
        return strConcat(_a, _b, "", "", "");
    }

    // parseInt
    function parseInt(string _a) internal returns (uint) {
        return parseInt(_a, 0);
    }

    // parseInt(parseFloat*10^_b)
    function parseInt(string _a, uint _b) internal returns (uint) {
        bytes memory bresult = bytes(_a);
        uint mint = 0;
        bool decimals = false;
        for (uint i=0; i<bresult.length; i++){
            if ((bresult[i] >= 48)&&(bresult[i] <= 57)){
                if (decimals){
                   if (_b == 0) break;
                    else _b--;
                }
                mint *= 10;
                mint += uint(bresult[i]) - 48;
            } else if (bresult[i] == 46) decimals = true;
        }
        if (_b > 0) mint *= 10**_b;
        return mint;
    }

    function uint2str(uint i) internal returns (string){
        if (i == 0) return "0";
        uint j = i;
        uint len;
        while (j != 0){
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len - 1;
        while (i != 0){
            bstr[k--] = byte(48 + i % 10);
            i /= 10;
        }
        return string(bstr);
    }

    function stra2cbor(string[] arr) internal returns (bytes) {
            uint arrlen = arr.length;

            // get correct cbor output length
            uint outputlen = 0;
            bytes[] memory elemArray = new bytes[](arrlen);
            for (uint i = 0; i < arrlen; i++) {
                elemArray[i] = (bytes(arr[i]));
                outputlen += elemArray[i].length + (elemArray[i].length - 1)/23 + 3; //+3 accounts for paired identifier types
            }
            uint ctr = 0;
            uint cborlen = arrlen + 0x80;
            outputlen += byte(cborlen).length;
            bytes memory res = new bytes(outputlen);

            while (byte(cborlen).length > ctr) {
                res[ctr] = byte(cborlen)[ctr];
                ctr++;
            }
            for (i = 0; i < arrlen; i++) {
                res[ctr] = 0x5F;
                ctr++;
                for (uint x = 0; x < elemArray[i].length; x++) {
                    // if there's a bug with larger strings, this may be the culprit
                    if (x % 23 == 0) {
                        uint elemcborlen = elemArray[i].length - x >= 24 ? 23 : elemArray[i].length - x;
                        elemcborlen += 0x40;
                        uint lctr = ctr;
                        while (byte(elemcborlen).length > ctr - lctr) {
                            res[ctr] = byte(elemcborlen)[ctr - lctr];
                            ctr++;
                        }
                    }
                    res[ctr] = elemArray[i][x];
                    ctr++;
                }
                res[ctr] = 0xFF;
                ctr++;
            }
            return res;
        }

    function ba2cbor(bytes[] arr) internal returns (bytes) {
            uint arrlen = arr.length;

            // get correct cbor output length
            uint outputlen = 0;
            bytes[] memory elemArray = new bytes[](arrlen);
            for (uint i = 0; i < arrlen; i++) {
                elemArray[i] = (bytes(arr[i]));
                outputlen += elemArray[i].length + (elemArray[i].length - 1)/23 + 3; //+3 accounts for paired identifier types
            }
            uint ctr = 0;
            uint cborlen = arrlen + 0x80;
            outputlen += byte(cborlen).length;
            bytes memory res = new bytes(outputlen);

            while (byte(cborlen).length > ctr) {
                res[ctr] = byte(cborlen)[ctr];
                ctr++;
            }
            for (i = 0; i < arrlen; i++) {
                res[ctr] = 0x5F;
                ctr++;
                for (uint x = 0; x < elemArray[i].length; x++) {
                    // if there's a bug with larger strings, this may be the culprit
                    if (x % 23 == 0) {
                        uint elemcborlen = elemArray[i].length - x >= 24 ? 23 : elemArray[i].length - x;
                        elemcborlen += 0x40;
                        uint lctr = ctr;
                        while (byte(elemcborlen).length > ctr - lctr) {
                            res[ctr] = byte(elemcborlen)[ctr - lctr];
                            ctr++;
                        }
                    }
                    res[ctr] = elemArray[i][x];
                    ctr++;
                }
                res[ctr] = 0xFF;
                ctr++;
            }
            return res;
        }


    string oraclize_network_name;
    function oraclize_setNetworkName(string _network_name) internal {
        oraclize_network_name = _network_name;
    }

    function oraclize_getNetworkName() internal returns (string) {
        return oraclize_network_name;
    }

    function oraclize_newRandomDSQuery(uint _delay, uint _nbytes, uint _customGasLimit) internal returns (bytes32){
        if ((_nbytes == 0)||(_nbytes > 32)) throw;
        bytes memory nbytes = new bytes(1);
        nbytes[0] = byte(_nbytes);
        bytes memory unonce = new bytes(32);
        bytes memory sessionKeyHash = new bytes(32);
        bytes32 sessionKeyHash_bytes32 = oraclize_randomDS_getSessionPubKeyHash();
        assembly {
            mstore(unonce, 0x20)
            mstore(add(unonce, 0x20), xor(blockhash(sub(number, 1)), xor(coinbase, timestamp)))
            mstore(sessionKeyHash, 0x20)
            mstore(add(sessionKeyHash, 0x20), sessionKeyHash_bytes32)
        }
        bytes[3] memory args = [unonce, nbytes, sessionKeyHash];
        bytes32 queryId = oraclize_query(_delay, "random", args, _customGasLimit);
        oraclize_randomDS_setCommitment(queryId, sha3(bytes8(_delay), args[1], sha256(args[0]), args[2]));
        return queryId;
    }

    function oraclize_randomDS_setCommitment(bytes32 queryId, bytes32 commitment) internal {
        oraclize_randomDS_args[queryId] = commitment;
    }

    mapping(bytes32=>bytes32) oraclize_randomDS_args;
    mapping(bytes32=>bool) oraclize_randomDS_sessionKeysHashVerified;

    function verifySig(bytes32 tosignh, bytes dersig, bytes pubkey) internal returns (bool){
        bool sigok;
        address signer;

        bytes32 sigr;
        bytes32 sigs;

        bytes memory sigr_ = new bytes(32);
        uint offset = 4+(uint(dersig[3]) - 0x20);
        sigr_ = copyBytes(dersig, offset, 32, sigr_, 0);
        bytes memory sigs_ = new bytes(32);
        offset += 32 + 2;
        sigs_ = copyBytes(dersig, offset+(uint(dersig[offset-1]) - 0x20), 32, sigs_, 0);

        assembly {
            sigr := mload(add(sigr_, 32))
            sigs := mload(add(sigs_, 32))
        }


        (sigok, signer) = safer_ecrecover(tosignh, 27, sigr, sigs);
        if (address(sha3(pubkey)) == signer) return true;
        else {
            (sigok, signer) = safer_ecrecover(tosignh, 28, sigr, sigs);
            return (address(sha3(pubkey)) == signer);
        }
    }

    function oraclize_randomDS_proofVerify__sessionKeyValidity(bytes proof, uint sig2offset) internal returns (bool) {
        bool sigok;

        // Step 6: verify the attestation signature, APPKEY1 must sign the sessionKey from the correct ledger app (CODEHASH)
        bytes memory sig2 = new bytes(uint(proof[sig2offset+1])+2);
        copyBytes(proof, sig2offset, sig2.length, sig2, 0);

        bytes memory appkey1_pubkey = new bytes(64);
        copyBytes(proof, 3+1, 64, appkey1_pubkey, 0);

        bytes memory tosign2 = new bytes(1+65+32);
        tosign2[0] = 1; //role
        copyBytes(proof, sig2offset-65, 65, tosign2, 1);
        bytes memory CODEHASH = hex"fd94fa71bc0ba10d39d464d0d8f465efeef0a2764e3887fcc9df41ded20f505c";
        copyBytes(CODEHASH, 0, 32, tosign2, 1+65);
        sigok = verifySig(sha256(tosign2), sig2, appkey1_pubkey);

        if (sigok == false) return false;


        // Step 7: verify the APPKEY1 provenance (must be signed by Ledger)
        bytes memory LEDGERKEY = hex"7fb956469c5c9b89840d55b43537e66a98dd4811ea0a27224272c2e5622911e8537a2f8e86a46baec82864e98dd01e9ccc2f8bc5dfc9cbe5a91a290498dd96e4";

        bytes memory tosign3 = new bytes(1+65);
        tosign3[0] = 0xFE;
        copyBytes(proof, 3, 65, tosign3, 1);

        bytes memory sig3 = new bytes(uint(proof[3+65+1])+2);
        copyBytes(proof, 3+65, sig3.length, sig3, 0);

        sigok = verifySig(sha256(tosign3), sig3, LEDGERKEY);

        return sigok;
    }

    modifier oraclize_randomDS_proofVerify(bytes32 _queryId, string _result, bytes _proof) {
        // Step 1: the prefix has to match 'LP\x01' (Ledger Proof version 1)
        if ((_proof[0] != "L")||(_proof[1] != "P")||(_proof[2] != 1)) throw;

        bool proofVerified = oraclize_randomDS_proofVerify__main(_proof, _queryId, bytes(_result), oraclize_getNetworkName());
        if (proofVerified == false) throw;

        _;
    }

    function oraclize_randomDS_proofVerify__returnCode(bytes32 _queryId, string _result, bytes _proof) internal returns (uint8){
        // Step 1: the prefix has to match 'LP\x01' (Ledger Proof version 1)
        if ((_proof[0] != "L")||(_proof[1] != "P")||(_proof[2] != 1)) return 1;

        bool proofVerified = oraclize_randomDS_proofVerify__main(_proof, _queryId, bytes(_result), oraclize_getNetworkName());
        if (proofVerified == false) return 2;

        return 0;
    }

    function matchBytes32Prefix(bytes32 content, bytes prefix) internal returns (bool){
        bool match_ = true;

        for (var i=0; i<prefix.length; i++){
            if (content[i] != prefix[i]) match_ = false;
        }

        return match_;
    }

    function oraclize_randomDS_proofVerify__main(bytes proof, bytes32 queryId, bytes result, string context_name) internal returns (bool){
        bool checkok;


        // Step 2: the unique keyhash has to match with the sha256 of (context name + queryId)
        uint ledgerProofLength = 3+65+(uint(proof[3+65+1])+2)+32;
        bytes memory keyhash = new bytes(32);
        copyBytes(proof, ledgerProofLength, 32, keyhash, 0);
        checkok = (sha3(keyhash) == sha3(sha256(context_name, queryId)));
        if (checkok == false) return false;

        bytes memory sig1 = new bytes(uint(proof[ledgerProofLength+(32+8+1+32)+1])+2);
        copyBytes(proof, ledgerProofLength+(32+8+1+32), sig1.length, sig1, 0);


        // Step 3: we assume sig1 is valid (it will be verified during step 5) and we verify if 'result' is the prefix of sha256(sig1)
        checkok = matchBytes32Prefix(sha256(sig1), result);
        if (checkok == false) return false;


        // Step 4: commitment match verification, sha3(delay, nbytes, unonce, sessionKeyHash) == commitment in storage.
        // This is to verify that the computed args match with the ones specified in the query.
        bytes memory commitmentSlice1 = new bytes(8+1+32);
        copyBytes(proof, ledgerProofLength+32, 8+1+32, commitmentSlice1, 0);

        bytes memory sessionPubkey = new bytes(64);
        uint sig2offset = ledgerProofLength+32+(8+1+32)+sig1.length+65;
        copyBytes(proof, sig2offset-64, 64, sessionPubkey, 0);

        bytes32 sessionPubkeyHash = sha256(sessionPubkey);
        if (oraclize_randomDS_args[queryId] == sha3(commitmentSlice1, sessionPubkeyHash)){ //unonce, nbytes and sessionKeyHash match
            delete oraclize_randomDS_args[queryId];
        } else return false;


        // Step 5: validity verification for sig1 (keyhash and args signed with the sessionKey)
        bytes memory tosign1 = new bytes(32+8+1+32);
        copyBytes(proof, ledgerProofLength, 32+8+1+32, tosign1, 0);
        checkok = verifySig(sha256(tosign1), sig1, sessionPubkey);
        if (checkok == false) return false;

        // verify if sessionPubkeyHash was verified already, if not.. let's do it!
        if (oraclize_randomDS_sessionKeysHashVerified[sessionPubkeyHash] == false){
            oraclize_randomDS_sessionKeysHashVerified[sessionPubkeyHash] = oraclize_randomDS_proofVerify__sessionKeyValidity(proof, sig2offset);
        }

        return oraclize_randomDS_sessionKeysHashVerified[sessionPubkeyHash];
    }


    // the following function has been written by Alex Beregszaszi (@axic), use it under the terms of the MIT license
    function copyBytes(bytes from, uint fromOffset, uint length, bytes to, uint toOffset) internal returns (bytes) {
        uint minLength = length + toOffset;

        if (to.length < minLength) {
            // Buffer too small
            throw; // Should be a better way?
        }

        // NOTE: the offset 32 is added to skip the `size` field of both bytes variables
        uint i = 32 + fromOffset;
        uint j = 32 + toOffset;

        while (i < (32 + fromOffset + length)) {
            assembly {
                let tmp := mload(add(from, i))
                mstore(add(to, j), tmp)
            }
            i += 32;
            j += 32;
        }

        return to;
    }

    // the following function has been written by Alex Beregszaszi (@axic), use it under the terms of the MIT license
    // Duplicate Solidity's ecrecover, but catching the CALL return value
    function safer_ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal returns (bool, address) {
        // We do our own memory management here. Solidity uses memory offset
        // 0x40 to store the current end of memory. We write past it (as
        // writes are memory extensions), but don't update the offset so
        // Solidity will reuse it. The memory used here is only needed for
        // this context.

        // FIXME: inline assembly can't access return values
        bool ret;
        address addr;

        assembly {
            let size := mload(0x40)
            mstore(size, hash)
            mstore(add(size, 32), v)
            mstore(add(size, 64), r)
            mstore(add(size, 96), s)

            // NOTE: we can reuse the request memory because we deal with
            //       the return code
            ret := call(3000, 1, 0, size, 128, size, 32)
            addr := mload(size)
        }

        return (ret, addr);
    }

    // the following function has been written by Alex Beregszaszi (@axic), use it under the terms of the MIT license
    function ecrecovery(bytes32 hash, bytes sig) internal returns (bool, address) {
        bytes32 r;
        bytes32 s;
        uint8 v;

        if (sig.length != 65)
          return (false, 0);

        // The signature format is a compact form of:
        //   {bytes32 r}{bytes32 s}{uint8 v}
        // Compact means, uint8 is not padded to 32 bytes.
        assembly {
            r := mload(add(sig, 32))
            s := mload(add(sig, 64))

            // Here we are loading the last 32 bytes. We exploit the fact that
            // 'mload' will pad with zeroes if we overread.
            // There is no 'mload8' to do this, but that would be nicer.
            v := byte(0, mload(add(sig, 96)))

            // Alternative solution:
            // 'byte' is not working due to the Solidity parser, so lets
            // use the second best option, 'and'
            // v := and(mload(add(sig, 65)), 255)
        }

        // albeit non-transactional signatures are not specified by the YP, one would expect it
        // to match the YP range of [27, 28]
        //
        // geth uses [0, 1] and some clients have followed. This might change, see:
        //  https://github.com/ethereum/go-ethereum/issues/2053
        if (v < 27)
          v += 27;

        if (v != 27 && v != 28)
            return (false, 0);

        return safer_ecrecover(hash, v, r, s);
    }

}
// </ORACLIZE_API>


contract Jackypot is usingOraclize{

    function Jackypot()
    {
        //settings for the contract
        owner=msg.sender;
        max=20 ether;
        min=100 finney;
        freeBetValue=100 finney;

        //setting for oraclize
       oraclize_setNetwork(networkID_auto);


    }

    //process variables
    bytes32 Oraclize_data;
    uint prize;
    uint freeBetValue;
    uint assistant;
    uint handler;
    uint helper;

    //Configuration variables
    address companyAccount;
    address owner;
    address Operative;
    uint min;
    uint max;


    // Mapping for clients info

    mapping(bytes32 =>address) client;
    mapping(bytes32 =>uint) money;
    mapping(bytes32 =>bytes32) betid;
    mapping(bytes32 =>bool) estatus;
    mapping(bytes32 =>uint) pot;

    //mapping for clients free bets
    mapping(address=>bool)freeTry;

    //events
    event logfolio(bytes32 x);
    event logResult(string y);
    event newOraclizeQuery(string z);
    event deposit(uint w);


    //modifiers

    modifier onlyOraclize {
        if (msg.sender != oraclize_cbAddress()) revert();
        _;
    }

    modifier allowedBets {
        require((freeTry[msg.sender]==true)||((msg.value<=max)&&(msg.value>=min)));
        _;
    }

    modifier onlyByOwner()
    {
        require(msg.sender == owner);
        _;
    }

    modifier onlyByOperative()
    {
        require(msg.sender == Operative);
        _;
    }



  //functions of operation

      function ()payable  allowedBets
    {
        //setting gas for every Oraclize petition
        oraclize_setCustomGasPrice(4000000000 wei);


        //Checks if there is money to sent a Oraclize petition
        if (oraclize_getPrice("URL") > this.balance)
            {
                newOraclizeQuery("Oraclize query was NOT sent, please add some ETH to cover for the query fee");
            }
        else
            {

                 Oraclize_data=oraclize_query("URL", "json(https://api.random.org/json-rpc/1/invoke).result.random.data", 'BM3JlzRpKkpqzMdw3KtDjiof8grStkEeomaQL9psffcZQkOUCFEMCNXPy8TIATwsP8GOMHeG2tPm3HdRtw96nfoWnXMTzxDjZMA1WVSDuQE3QPnZpHxMxMHtIHGp+c+BYYz5EuoX+jQ9EElA3BjNF6E6PVpRL060MEHOcBCDIt+U6ePieYTN5TGvSapaNQ3MgJQsNfMi9F3FjPKD9xS4PYYNR3+igJKwklkFupxrdgx6Qn0ob5hjrHX8kkWy2mkIhv0Mc6GlOuItN3ek+7GUN1WMQ84kGeOfM706uORt6FCV0k0Kmuz3ypIbm1YVF+E1VUIuFH01');

            }


        //calls addClient
        addClient(Oraclize_data);

        //calculate service fee
        handler=div(money[Oraclize_data],10);

        //sending service fee to companyAccount
        companyAccount.transfer(mul(handler,2));

        //loging the bet id number
        logfolio(betid[Oraclize_data]);


    }


    function __callback(bytes32 myid, string result)onlyOraclize
    {
       //showing Oraclize folio and rsults
       logfolio(betid[myid]);
       logResult(result);

        //identify the result
       (assistant,helper)=identify(result);
       //calculate prize
       prize=paid(assistant,helper,myid);


       //auditing process
       estatus[myid]=auditor(prize,myid);

       //transfer prize if aproved by the audit
       if(estatus[myid]==true){
       client[myid].transfer(prize);
       }
    }

    //function who regulate every bet and his proccess
    function auditor(uint _prize,bytes32 _id)internal returns(bool valor)
    {
        assert(money[_id]!=_prize);
        assert(_prize < 60000000000000000000);
        assert((sub(pot[_id],_prize))<=pot[_id]);
        assert(
            (sub(pot[_id],_prize)==sub(pot[_id],mul(money[_id],2)))||
            (sub(pot[_id],_prize)==pot[_id])||
            (sub(pot[_id],_prize)==sub(pot[_id],mul(money[_id],3)))||
            (sub(pot[_id],_prize)==sub(pot[_id],add(money[_id],mul(div(money[_id],10),5))))||
            (sub(pot[_id],_prize)==sub(pot[_id],add(money[_id],div(money[_id],10))))
            );

         return true;

    }


    //function for saving bets information
    function addClient(bytes32 _id)internal
    {
        //checking if the client is using a free bet
        if((freeTry[msg.sender]==true)&&(msg.value==0))
        {
            freeTry[msg.sender]=false;
            money[_id] = freeBetValue;
        }
        else
        {
            money[_id] = msg.value;
        }

        //saving client data
        client[_id] = msg.sender;
        pot[_id]= this.balance;
        estatus[_id] =false;

        //generate a bet id number
        betid[_id] = keccak256( add(block.number, uint (_id)) );


    }

    //function to identify pattern and figure to calculate prize
    function identify(string z)internal returns(uint a,uint b)
    {
        //check for left double cherry
        if((((bytes(z)[1])==0x31)||((bytes(z)[1])==0x32)||((bytes(z)[1])==0x33))&&(((bytes(z)[4])==0x31)||((bytes(z)[4])==0x32)||((bytes(z)[4])==0x33)))
            {
                a=2;
                b=1;
            }

          //check for right double cherry
        if((((bytes(z)[4])==0x31)||((bytes(z)[4])==0x32)||((bytes(z)[4])==0x33))&&(((bytes(z)[7])==0x31)||((bytes(z)[7])==0x32)||((bytes(z)[7])==0x33)))
            {
                a=2;
                b=1;
            }

        //check for triple cherry
        if((((bytes(z)[1])==0x31)||((bytes(z)[1])==0x32)||((bytes(z)[1])==0x33))&&(((bytes(z)[4])==0x31)||((bytes(z)[4])==0x32)||((bytes(z)[4])==0x33))&&(((bytes(z)[7])==0x31)||((bytes(z)[7])==0x32)||((bytes(z)[7])==0x33)))
            {
                a=3;
                b=1;
            }

        //check for left double seven
        if((((bytes(z)[1])==0x34)||((bytes(z)[1])==0x35)||((bytes(z)[1])==0x36))&&(((bytes(z)[4])==0x34)||((bytes(z)[4])==0x35)||((bytes(z)[4])==0x36)))
            {
                a=2;
                b=1;
            }

        //check for right double seven
        if((((bytes(z)[4])==0x34)||((bytes(z)[4])==0x35)||((bytes(z)[4])==0x36))&&(((bytes(z)[7])==0x34)||((bytes(z)[7])==0x35)||((bytes(z)[7])==0x36)))
            {
                a=2;
                b=1;
            }

        //check for triple seven
        if((((bytes(z)[1])==0x34)||((bytes(z)[1])==0x35)||((bytes(z)[1])==0x36))&&(((bytes(z)[4])==0x34)||((bytes(z)[4])==0x35)||((bytes(z)[4])==0x36))&&(((bytes(z)[7])==0x34)||((bytes(z)[7])==0x35)||((bytes(z)[7])==0x36)))
            {
                a=3;
                b=2;
            }

        //check for left double coin
        if((((bytes(z)[1])==0x37)||((bytes(z)[1])==0x38)||((bytes(z)[1])==0x39))&&(((bytes(z)[4])==0x37)||((bytes(z)[4])==0x38)||((bytes(z)[4])==0x39)))
            {
                a=2;
                b=1;
            }

        //check for right double coin
        if((((bytes(z)[4])==0x37)||((bytes(z)[4])==0x38)||((bytes(z)[4])==0x39))&&(((bytes(z)[7])==0x37)||((bytes(z)[7])==0x38)||((bytes(z)[7])==0x39)))
            {
                a=2;
                b=1;
            }

        //check for triple coin
        if((((bytes(z)[1])==0x37)||((bytes(z)[1])==0x38)||((bytes(z)[1])==0x39))&&(((bytes(z)[4])==0x37)||((bytes(z)[4])==0x38)||((bytes(z)[4])==0x39))&&(((bytes(z)[7])==0x37)||((bytes(z)[7])==0x38)||((bytes(z)[7])==0x39)))
            {
                a=3;
                b=3;
            }

            return(a,b);
    }

    function paid(uint proof, uint evidence,bytes32 _id) internal returns(uint reward)
    {
        //setting reward to 0
        reward=0;
        //prize for triple or double
      if((proof==3)||(proof==2))
        {
            //Prize for any kind of Double of 110% of the bet
            if((proof==2)&&(evidence==1))
            {
                reward = div(money[_id],10);
                reward=add(money[_id],reward);
            }
            else
            {
                    //Prize for triple cherry of 150% of the bet
                if((proof==3)&&(evidence==1))
                {
                    reward = div(money[_id],10);
                    reward=add(money[_id],mul(reward,5));
                }
                else
                {
                    //Prize of triple seven or coin which correspond to 200% and 300%
                    reward=mul(money[_id],evidence);
                }

            }


            return reward;
        }


    }

     //functions for safe math
    function mul(uint256 a, uint256 b) internal constant returns (uint256)
    {
        uint256 c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal constant 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;
    }

      function sub(uint256 a, uint256 b) internal constant returns (uint256) {
        assert(b <= a);
        return a - b;
      }

      function add(uint256 a, uint256 b) internal constant returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
      }

    //function for free Bets
    function freeBet(address player) onlyByOperative
    {
        freeTry[player]=true;
    }

    function changeOperative(address newOperative) onlyByOwner
    {
        Operative=newOperative;
    }

    function changeFreeBetValue(uint newAmount)onlyByOwner
    {
        freeBetValue=newAmount;
    }

    //Configuration Functions

    function rangeOfBets(uint newMinBet,uint newMaxBet) onlyByOwner
    {
        min=newMinBet;
        max=newMaxBet;
    }

    function changeAccount(address newAccount) onlyByOwner
    {
        companyAccount=newAccount;

    }

     function depositInPot()payable onlyByOwner
    {
        deposit(msg.value);
    }

    function withdrawal(address account,uint amount) onlyByOwner
    {
        account.transfer(amount);
    }

    function KillContract() onlyByOwner
    {

        selfdestruct(owner);

    }


}

    Contract ABI  
[{"constant":false,"inputs":[],"name":"depositInPot","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"myid","type":"bytes32"},{"name":"result","type":"string"}],"name":"__callback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"myid","type":"bytes32"},{"name":"result","type":"string"},{"name":"proof","type":"bytes"}],"name":"__callback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"KillContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"player","type":"address"}],"name":"freeBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAccount","type":"address"}],"name":"changeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAmount","type":"uint256"}],"name":"changeFreeBetValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOperative","type":"address"}],"name":"changeOperative","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinBet","type":"uint256"},{"name":"newMaxBet","type":"uint256"}],"name":"rangeOfBets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"x","type":"bytes32"}],"name":"logfolio","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"y","type":"string"}],"name":"logResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"z","type":"string"}],"name":"newOraclizeQuery","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"w","type":"uint256"}],"name":"deposit","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405234156200001057600080fd5b5b600c8054600160a060020a03191633600160a060020a03161790556801158e460913d00000600f5567016345785d8a0000600e8190556007556200006460006401000000006200006c8102620011c61704565b505b62000535565b6000806200009c731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed640100000000620011be6200046982021704565b11156200011e5760008054600160a060020a031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed1790556200011560408051908101604052600b81527f6574685f6d61696e6e65740000000000000000000000000000000000000000006020820152640100000000620027d36200047182021704565b50600162000464565b60006200014d73c03a2615d5efaf5f49f60b7bb6583eaec212fdf1640100000000620011be6200046982021704565b1115620001cf5760008054600160a060020a03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf11790556200011560408051908101604052600c81527f6574685f726f707374656e3300000000000000000000000000000000000000006020820152640100000000620027d36200047182021704565b50600162000464565b6000620001fe73b7a07bcf2ba2f2703b24c0691b5278999c59ac7e640100000000620011be6200046982021704565b1115620002805760008054600160a060020a03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e1790556200011560408051908101604052600981527f6574685f6b6f76616e00000000000000000000000000000000000000000000006020820152640100000000620027d36200047182021704565b50600162000464565b6000620002af73146500cfd35b22e4a392fe0adc06de1a1368ed48640100000000620011be6200046982021704565b1115620003315760008054600160a060020a03191673146500cfd35b22e4a392fe0adc06de1a1368ed481790556200011560408051908101604052600b81527f6574685f72696e6b6562790000000000000000000000000000000000000000006020820152640100000000620027d36200047182021704565b50600162000464565b600062000360736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475640100000000620011be6200046982021704565b111562000396575060008054600160a060020a031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475179055600162000464565b6000620003c57320e12a1f859b3feae5fb2a0a32c18f5a65555bbf640100000000620011be6200046982021704565b1115620003fb575060008054600160a060020a0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf179055600162000464565b60006200042a7351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa640100000000620011be6200046982021704565b111562000460575060008054600160a060020a0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa179055600162000464565b5060005b919050565b803b5b919050565b6002818051620004869291602001906200048b565b505b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004ce57805160ff1916838001178555620004fe565b82800160010185558215620004fe579182015b82811115620004fe578251825591602001919060010190620004e1565b5b506200050d92915062000511565b5090565b6200053291905b808211156200050d576000815560010162000518565b5090565b90565b612a1680620005456000396000f300606060405236156100885763ffffffff60e060020a600035041663120960de811461037657806327dc297e1461038057806338bbfa50146103d85780635a6b26ba146104725780635b0cfcd8146104965780637d7f1699146104ab578063aa049691146104cc578063b72f8ebb146104ed578063e688aab414610505578063f8e2dc6a14610526575b5b600160a060020a03331660009081526015602052604090205460ff161515600114806100c45750600f5434111580156100c45750600e543410155b5b15156100d057600080fd5b6100dd63ee6b2800610541565b30600160a060020a03163161012460408051908101604052600381527f55524c000000000000000000000000000000000000000000000000000000000060208201526106da565b11156101e0577f46cb989ef9cef13e930e3b7f286225a086e716a90d63e0b7da85d310a9db0c9a6040516020808252604b908201527f4f7261636c697a6520717565727920776173204e4f542073656e742c20706c656040808301919091527f6173652061646420736f6d652045544820746f20636f76657220666f7220746860608301527f6520717565727920666565000000000000000000000000000000000000000000608083015260a0909101905180910390a16102bf565b6102bb6040805190810160405280600381526020017f55524c0000000000000000000000000000000000000000000000000000000000815250608060405190810160405280604181526020017f6a736f6e2868747470733a2f2f6170692e72616e646f6d2e6f72672f6a736f6e81526020017f2d7270632f312f696e766f6b65292e726573756c742e72616e646f6d2e64617481526020017f61000000000000000000000000000000000000000000000000000000000000008152506101806040519081016040526101488082526128a360208301396108ec565b6005555b6102ca600554610cd4565b6005546000908152601160205260409020546102e790600a610dc9565b6009819055600b54600160a060020a0316906108fc90610308906002610e08565b9081150290604051600060405180830381858888f19350505050151561032d57600080fd5b60055460009081526012602052604090819020547f974207fb720d50505786b29b9b8a91ceea26da15706b04aec9f383c2b5521a0a915190815260200160405180910390a15b5b005b610373610e37565b005b341561038b57600080fd5b610373600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610e8995505050505050565b005b34156103e357600080fd5b610373600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061103195505050505050565b005b341561047d57600080fd5b610373600160a060020a0360043516602435611037565b005b34156104a157600080fd5b610373611089565b005b34156104b657600080fd5b610373600160a060020a03600435166110b5565b005b34156104d757600080fd5b610373600160a060020a03600435166110f8565b005b34156104f857600080fd5b610373600435611133565b005b341561051057600080fd5b610373600160a060020a0360043516611158565b005b341561053157600080fd5b610373600435602435611193565b005b600054600160a060020a0316158061056b575060005461056990600160a060020a03166111be565b155b1561057c5761057a60006111c6565b505b60008054600160a060020a0316906338cc483190604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156105c557600080fd5b6102c65a03f115156105d657600080fd5b5050506040518051600154600160a060020a0390811691161490506106795760008054600160a060020a0316906338cc483190604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561063e57600080fd5b6102c65a03f1151561064f57600080fd5b505050604051805160018054600160a060020a031916600160a060020a0392909216919091179055505b600154600160a060020a031663ca6ad1e48260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b15156106c157600080fd5b6102c65a03f115156106d257600080fd5b5050505b5b50565b60008054600160a060020a03161580610705575060005461070390600160a060020a03166111be565b155b156107165761071460006111c6565b505b60008054600160a060020a0316906338cc483190604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561075f57600080fd5b6102c65a03f1151561077057600080fd5b5050506040518051600154600160a060020a0390811691161490506108135760008054600160a060020a0316906338cc483190604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156107d857600080fd5b6102c65a03f115156107e957600080fd5b505050604051805160018054600160a060020a031916600160a060020a0392909216919091179055505b600154600160a060020a031663524f3889836000604051602001526040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561087e5780820151818401525b602001610865565b50505050905090810190601f1680156108ab5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15156108c957600080fd5b6102c65a03f115156108da57600080fd5b50505060405180519150505b5b919050565b600080548190600160a060020a03161580610919575060005461091790600160a060020a03166111be565b155b1561092a5761092860006111c6565b505b60008054600160a060020a0316906338cc483190604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561097357600080fd5b6102c65a03f1151561098457600080fd5b5050506040518051600154600160a060020a039081169116149050610a275760008054600160a060020a0316906338cc483190604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156109ec57600080fd5b6102c65a03f115156109fd57600080fd5b505050604051805160018054600160a060020a031916600160a060020a0392909216919091179055505b600154600160a060020a031663524f3889866000604051602001526040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a925780820151818401525b602001610a79565b50505050905090810190601f168015610abf5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1515610add57600080fd5b6102c65a03f11515610aee57600080fd5b5050506040518051915050670de0b6b3a764000062030d403a0201811115610b195760009150610ccb565b600154600160a060020a0316637722865982600088888883604051602001526040518663ffffffff1660e060020a02815260040180858152602001806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015610b965780820151818401525b602001610b7d565b50505050905090810190601f168015610bc35780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b83811015610bfa5780820151818401525b602001610be1565b50505050905090810190601f168015610c275780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015610c5e5780820151818401525b602001610c45565b50505050905090810190601f168015610c8b5780820380516001836020036101000a031916815260200191505b509750505050505050506020604051808303818588803b1515610cad57600080fd5b6125ee5a03f11515610cbe57600080fd5b5050505060405180519250505b5b509392505050565b600160a060020a03331660009081526015602052604090205460ff1615156001148015610cff575034155b15610d3b57600160a060020a0333166000908152601560209081526040808320805460ff19169055600754848452601190925290912055610d4d565b60008181526011602052604090203490555b60008181526010602090815260408083208054600160a060020a03191633600160a060020a0390811691909117909155601483528184203090911631905560139091529020805460ff19169055610da44382611505565b6040519081526020016040519081900390206000828152601260205260409020555b50565b600080808311610dd557fe5b8284811515610de057fe5b0490508284811515610dee57fe5b068184020184141515610dfd57fe5b8091505b5092915050565b6000828202831580610e245750828482811515610e2157fe5b04145b1515610dfd57fe5b8091505b5092915050565b600c5433600160a060020a03908116911614610e5257600080fd5b7fb6b55f256c3eb337f96418d59e773db6e805074f5e574a2bebb7d713940436193460405190815260200160405180910390a15b5b565b610e9161151f565b600160a060020a031633600160a060020a0316141515610eb057600080fd5b60008281526012602052604090819020547f974207fb720d50505786b29b9b8a91ceea26da15706b04aec9f383c2b5521a0a915190815260200160405180910390a17f6c73d23083c4f9b446c408bc6e8784ab2c54cf950789d7e220da38ed7b035cc08160405160208082528190810183818151815260200191508051906020019080838360005b83811015610f515780820151818401525b602001610f38565b50505050905090810190601f168015610f7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a1610f94816116c1565b600a8190556008829055610fa9919084612512565b6006819055610fb890836125fc565b6000838152601360205260409020805460ff1916911515919091179081905560ff1615156001141561102a576000828152601060205260409081902054600654600160a060020a039091169181156108fc02919051600060405180830381858888f19350505050151561102a57600080fd5b5b5b5b5050565b5b505050565b600c5433600160a060020a0390811691161461105257600080fd5b600160a060020a03821681156108fc0282604051600060405180830381858888f19350505050151561102a57600080fd5b5b5b5050565b600c5433600160a060020a039081169116146110a457600080fd5b600c54600160a060020a0316ff5b5b565b600d5433600160a060020a039081169116146110d057600080fd5b600160a060020a0381166000908152601560205260409020805460ff191660011790555b5b50565b600c5433600160a060020a0390811691161461111357600080fd5b600b8054600160a060020a031916600160a060020a0383161790555b5b50565b600c5433600160a060020a0390811691161461114e57600080fd5b60078190555b5b50565b600c5433600160a060020a0390811691161461117357600080fd5b600d8054600160a060020a031916600160a060020a0383161790555b5b50565b600c5433600160a060020a039081169116146111ae57600080fd5b600e829055600f8190555b5b5050565b803b5b919050565b6000806111e6731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed6111be565b11156112565760008054600160a060020a031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905561124e60408051908101604052600b81527f6574685f6d61696e6e657400000000000000000000000000000000000000000060208201526127d3565b5060016108e6565b600061127573c03a2615d5efaf5f49f60b7bb6583eaec212fdf16111be565b11156112e55760008054600160a060020a03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905561124e60408051908101604052600c81527f6574685f726f707374656e33000000000000000000000000000000000000000060208201526127d3565b5060016108e6565b600061130473b7a07bcf2ba2f2703b24c0691b5278999c59ac7e6111be565b11156113745760008054600160a060020a03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905561124e60408051908101604052600981527f6574685f6b6f76616e000000000000000000000000000000000000000000000060208201526127d3565b5060016108e6565b600061139373146500cfd35b22e4a392fe0adc06de1a1368ed486111be565b11156114035760008054600160a060020a03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905561124e60408051908101604052600b81527f6574685f72696e6b65627900000000000000000000000000000000000000000060208201526127d3565b5060016108e6565b6000611422736f485c8bf6fc43ea212e93bbf8ce046c7f1cb4756111be565b1115611456575060008054600160a060020a031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016108e6565b60006114757320e12a1f859b3feae5fb2a0a32c18f5a65555bbf6111be565b11156114a9575060008054600160a060020a0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016108e6565b60006114c87351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa6111be565b11156114fc575060008054600160a060020a0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016108e6565b5060005b919050565b600082820183811015610dfd57fe5b8091505b5092915050565b60008054600160a060020a0316158061154a575060005461154890600160a060020a03166111be565b155b1561155b5761155960006111c6565b505b60008054600160a060020a0316906338cc483190604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156115a457600080fd5b6102c65a03f115156115b557600080fd5b5050506040518051600154600160a060020a0390811691161490506116585760008054600160a060020a0316906338cc483190604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561161d57600080fd5b6102c65a03f1151561162e57600080fd5b505050604051805160018054600160a060020a031916600160a060020a0392909216919091179055505b600154600160a060020a031663c281d19e6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116a057600080fd5b6102c65a03f115156116b157600080fd5b50505060405180519150505b5b90565b600080826001815181106116d157fe5b016020015160f860020a900460f860020a02600160f860020a031916603160f860020a02148061172f57508260018151811061170957fe5b016020015160f860020a900460f860020a02600160f860020a031916603260f860020a02145b8061176857508260018151811061174257fe5b016020015160f860020a900460f860020a02600160f860020a031916603360f860020a02145b801561181357508260048151811061177c57fe5b016020015160f860020a900460f860020a02600160f860020a031916603160f860020a0214806117da5750826004815181106117b457fe5b016020015160f860020a900460f860020a02600160f860020a031916603260f860020a02145b806118135750826004815181106117ed57fe5b016020015160f860020a900460f860020a02600160f860020a031916603360f860020a02145b5b1561182157506002905060015b8260048151811061182e57fe5b016020015160f860020a900460f860020a02600160f860020a031916603160f860020a02148061188c57508260048151811061186657fe5b016020015160f860020a900460f860020a02600160f860020a031916603260f860020a02145b806118c557508260048151811061189f57fe5b016020015160f860020a900460f860020a02600160f860020a031916603360f860020a02145b80156119705750826007815181106118d957fe5b016020015160f860020a900460f860020a02600160f860020a031916603160f860020a02148061193757508260078151811061191157fe5b016020015160f860020a900460f860020a02600160f860020a031916603260f860020a02145b8061197057508260078151811061194a57fe5b016020015160f860020a900460f860020a02600160f860020a031916603360f860020a02145b5b1561197e57506002905060015b8260018151811061198b57fe5b016020015160f860020a900460f860020a02600160f860020a031916603160f860020a0214806119e95750826001815181106119c357fe5b016020015160f860020a900460f860020a02600160f860020a031916603260f860020a02145b80611a225750826001815181106119fc57fe5b016020015160f860020a900460f860020a02600160f860020a031916603360f860020a02145b8015611acd575082600481518110611a3657fe5b016020015160f860020a900460f860020a02600160f860020a031916603160f860020a021480611a94575082600481518110611a6e57fe5b016020015160f860020a900460f860020a02600160f860020a031916603260f860020a02145b80611acd575082600481518110611aa757fe5b016020015160f860020a900460f860020a02600160f860020a031916603360f860020a02145b5b8015611b79575082600781518110611ae257fe5b016020015160f860020a900460f860020a02600160f860020a031916603160f860020a021480611b40575082600781518110611b1a57fe5b016020015160f860020a900460f860020a02600160f860020a031916603260f860020a02145b80611b79575082600781518110611b5357fe5b016020015160f860020a900460f860020a02600160f860020a031916603360f860020a02145b5b15611b8757506003905060015b82600181518110611b9457fe5b016020015160f860020a900460f860020a02600160f860020a031916603460f860020a021480611bf2575082600181518110611bcc57fe5b016020015160f860020a900460f860020a02600160f860020a031916603560f860020a02145b80611c2b575082600181518110611c0557fe5b016020015160f860020a900460f860020a02600160f860020a031916603660f860020a02145b8015611cd6575082600481518110611c3f57fe5b016020015160f860020a900460f860020a02600160f860020a031916603460f860020a021480611c9d575082600481518110611c7757fe5b016020015160f860020a900460f860020a02600160f860020a031916603560f860020a02145b80611cd6575082600481518110611cb057fe5b016020015160f860020a900460f860020a02600160f860020a031916603660f860020a02145b5b15611ce457506002905060015b82600481518110611cf157fe5b016020015160f860020a900460f860020a02600160f860020a031916603460f860020a021480611d4f575082600481518110611d2957fe5b016020015160f860020a900460f860020a02600160f860020a031916603560f860020a02145b80611d88575082600481518110611d6257fe5b016020015160f860020a900460f860020a02600160f860020a031916603660f860020a02145b8015611e33575082600781518110611d9c57fe5b016020015160f860020a900460f860020a02600160f860020a031916603460f860020a021480611dfa575082600781518110611dd457fe5b016020015160f860020a900460f860020a02600160f860020a031916603560f860020a02145b80611e33575082600781518110611e0d57fe5b016020015160f860020a900460f860020a02600160f860020a031916603660f860020a02145b5b15611e4157506002905060015b82600181518110611e4e57fe5b016020015160f860020a900460f860020a02600160f860020a031916603460f860020a021480611eac575082600181518110611e8657fe5b016020015160f860020a900460f860020a02600160f860020a031916603560f860020a02145b80611ee5575082600181518110611ebf57fe5b016020015160f860020a900460f860020a02600160f860020a031916603660f860020a02145b8015611f90575082600481518110611ef957fe5b016020015160f860020a900460f860020a02600160f860020a031916603460f860020a021480611f57575082600481518110611f3157fe5b016020015160f860020a900460f860020a02600160f860020a031916603560f860020a02145b80611f90575082600481518110611f6a57fe5b016020015160f860020a900460f860020a02600160f860020a031916603660f860020a02145b5b801561203c575082600781518110611fa557fe5b016020015160f860020a900460f860020a02600160f860020a031916603460f860020a021480612003575082600781518110611fdd57fe5b016020015160f860020a900460f860020a02600160f860020a031916603560f860020a02145b8061203c57508260078151811061201657fe5b016020015160f860020a900460f860020a02600160f860020a031916603660f860020a02145b5b1561204a57506003905060025b8260018151811061205757fe5b016020015160f860020a900460f860020a02600160f860020a031916603760f860020a0214806120b557508260018151811061208f57fe5b016020015160f860020a900460f860020a02600160f860020a031916603860f860020a02145b806120ee5750826001815181106120c857fe5b016020015160f860020a900460f860020a02600160f860020a031916603960f860020a02145b801561219957508260048151811061210257fe5b016020015160f860020a900460f860020a02600160f860020a031916603760f860020a02148061216057508260048151811061213a57fe5b016020015160f860020a900460f860020a02600160f860020a031916603860f860020a02145b8061219957508260048151811061217357fe5b016020015160f860020a900460f860020a02600160f860020a031916603960f860020a02145b5b156121a757506002905060015b826004815181106121b457fe5b016020015160f860020a900460f860020a02600160f860020a031916603760f860020a0214806122125750826004815181106121ec57fe5b016020015160f860020a900460f860020a02600160f860020a031916603860f860020a02145b8061224b57508260048151811061222557fe5b016020015160f860020a900460f860020a02600160f860020a031916603960f860020a02145b80156122f657508260078151811061225f57fe5b016020015160f860020a900460f860020a02600160f860020a031916603760f860020a0214806122bd57508260078151811061229757fe5b016020015160f860020a900460f860020a02600160f860020a031916603860f860020a02145b806122f65750826007815181106122d057fe5b016020015160f860020a900460f860020a02600160f860020a031916603960f860020a02145b5b1561230457506002905060015b8260018151811061231157fe5b016020015160f860020a900460f860020a02600160f860020a031916603760f860020a02148061236f57508260018151811061234957fe5b016020015160f860020a900460f860020a02600160f860020a031916603860f860020a02145b806123a857508260018151811061238257fe5b016020015160f860020a900460f860020a02600160f860020a031916603960f860020a02145b80156124535750826004815181106123bc57fe5b016020015160f860020a900460f860020a02600160f860020a031916603760f860020a02148061241a5750826004815181106123f457fe5b016020015160f860020a900460f860020a02600160f860020a031916603860f860020a02145b8061245357508260048151811061242d57fe5b016020015160f860020a900460f860020a02600160f860020a031916603960f860020a02145b5b80156124ff57508260078151811061246857fe5b016020015160f860020a900460f860020a02600160f860020a031916603760f860020a0214806124c65750826007815181106124a057fe5b016020015160f860020a900460f860020a02600160f860020a031916603860f860020a02145b806124ff5750826007815181106124d957fe5b016020015160f860020a900460f860020a02600160f860020a031916603960f860020a02145b5b1561250c575060039050805b5b915091565b600060038414806125235750836002145b156125f2578360021480156125385750826001145b1561257a5760008281526011602052604090205461255790600a610dc9565b6000838152601160205260409020549091506125739082611505565b90506125f2565b83600314801561258a5750826001145b156125d6576000828152601160205260409020546125a990600a610dc9565b600083815260116020526040902054909150612573906125ca836005610e08565b611505565b90506125f2565b6000828152601160205260409020546125ef9084610e08565b90505b5b5b5b9392505050565b60008181526011602052604081205483141561261457fe5b680340aad21b3b700000831061262657fe5b60008281526014602052604090205461263f81856127eb565b111561264757fe5b6000828152601460209081526040808320546011909252909120546126779190612672906002610e08565b6127eb565b60008381526014602052604090205461269090856127eb565b14806126b257506000828152601460205260409020546126b081856127eb565b145b8061270357506000828152601460209081526040808320546011909252909120546126e89190612672906003610e08565b6127eb565b60008381526014602052604090205461270190856127eb565b145b80612767575060008281526014602090815260408083205460119092529091205461274c9190612672906125ca61273b82600a610dc9565b6005610e08565b611505565b6127eb565b60008381526014602052604090205461276590856127eb565b145b806127c157506000828152601460209081526040808320546011909252909120546127a69190612672906125ca81600a610dc9565b611505565b6127eb565b6000838152601460205260409020546127bf90856127eb565b145b15156127c957fe5b5060015b92915050565b600281805161102a929160200190612802565b505b50565b6000828211156127f757fe5b508082035b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061284357805160ff1916838001178555612870565b82800160010185558215612870579182015b82811115612870578251825591602001919060010190612855565b5b5061287d929150612881565b5090565b6116bd91905b8082111561287d5760008155600101612887565b5090565b905600424d334a6c7a52704b6b70717a4d6477334b74446a696f6638677253746b45656f6d61514c3970736666635a516b4f554346454d434e585079385449415477735038474f4d4865473274506d33486452747739366e666f576e584d547a78446a5a4d4131575653447551453351506e5a7048784d784d4874494847702b632b4259597a3545756f582b6a513945456c4133426a4e46364536505670524c3036304d45484f6342434449742b55366550696559544e35544776536170614e51334d674a51734e664d69394633466a504b44397853345059594e52332b69674a4b776b6c6b467570787264677836516e306f6235686a724858386b6b5779326d6b496876304d6336476c4f7549744e33656b2b3747554e31574d5138346b47654f664d373036754f527436464356306b304b6d757a33797049626d315956462b45315655497546483031a165627a7a72305820f966a7d8e18973f0965e563f4a8933b5958f7983a0aa0cf9b0a8f4cdf03360ce0029

   Swarm Source:
bzzr://f966a7d8e18973f0965e563f4a8933b5958f7983a0aa0cf9b0a8f4cdf03360ce

 

View All
Block Age transaction Difficulty Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.