{
  "contractName": "HexSumTreeGasProfiler",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gas",
          "type": "uint256"
        }
      ],
      "name": "GasConsumed",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "height",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "init",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_time",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "insert",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_time",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_nextKey",
          "type": "uint256"
        }
      ],
      "name": "mockNextKey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "nextKey",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "internalType": "uint64",
          "name": "_time",
          "type": "uint64"
        }
      ],
      "name": "search",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_key",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_time",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "set",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "total",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_key",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_time",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_delta",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_positive",
          "type": "bool"
        }
      ],
      "name": "update",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506111be806100206000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c80630ef26743146100885780632ddbd13a146100a2578063391f0ac2146100aa5780638a9b2f2c146100d8578063b8aa19e5146100e0578063ce48a3281461011a578063e1c7392a1461014c578063ea1652fa14610154578063fec5bc7e146101cd575b600080fd5b6100906101f9565b60408051918252519081900360200190f35b61009061020a565b6100d6600480360360408110156100c057600080fd5b506001600160401b038135169060200135610216565b005b61009061024b565b6100d6600480360360808110156100f657600080fd5b508035906001600160401b0360208201351690604081013590606001351515610251565b6100d66004803603606081101561013057600080fd5b508035906001600160401b036020820135169060400135610294565b6100d66102d5565b6100d66004803603604081101561016a57600080fd5b81019060208101813564010000000081111561018557600080fd5b82018360208201111561019757600080fd5b803590602001918460208302840111640100000000831117156101b957600080fd5b9193509150356001600160401b03166102e1565b6100d6600480360360408110156101e357600080fd5b506001600160401b038135169060200135610355565b60006102056000610395565b905090565b600061020560006103ab565b6000815b801561022e5760019091019060041c61021a565b5060008290556102466001848363ffffffff6103cc16565b505050565b60005490565b60005a905061026a60008686868663ffffffff61049a16565b60008051602061116a8339815191525a604080519184038252519081900360200190a15050505050565b60005a90506102ac600085858563ffffffff61057d16565b60008051602061116a8339815191525a604080519184038252519081900360200190a150505050565b6102df6000610658565b565b60005a905061032a84848080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509392508691505063ffffffff61067516565b505060008051602061116a8339815191525a604080519184038252519081900360200190a150505050565b60005a905061036c6000848463ffffffff61088c16565b5060008051602061116a8339815191525a604080519184038252519081900360200190a1505050565b60006103a3826001016108cc565b90505b919050565b6000806103b783610395565b90506103c583826000610917565b9392505050565b604080518082019091526018815277434845434b504f494e545f56414c55455f544f4f5f42494760401b60208201526001600160c01b0382111561048e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561045357818101518382015260200161043b565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061024683838361093b565b845460408051808201909152601b81527a14d55357d514915157d2d15657d113d154d7d393d517d1561254d5602a1b602082015290851061051c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b5060006105298686610ac2565b905060008261054757610542828563ffffffff610ad916565b610557565b610557828563ffffffff610b5d16565b9050610567876000888885610be3565b6105748787878787610c0f565b50505050505050565b835460408051808201909152601b81527a14d55357d514915157d2d15657d113d154d7d393d517d1561254d5602a1b60208201529084106105ff5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b50600061060c8585610ac2565b905061061c856000868686610be3565b80821115610639576106348585858486036001610c0f565b610651565b80821015610651576106518585858585036000610c0f565b5050505050565b61066f60018281019060009063ffffffff6103cc16565b60009055565b60608060008451116040518060400160405280601e81526020017f53554d5f545245455f4d495353494e475f5345415243485f56414c5545530000815250906106ff5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b50600061070c8685610d29565b905060008111801561073457508460018651038151811061072957fe5b602002602001015181115b6040518060400160405280601d81526020017f53554d5f545245455f5345415243485f4f55545f4f465f424f554e4453000000815250906107b65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b5060006107c38786610d45565b90506107cd611131565b6040805160a081019091526001600160401b0387168152602081016107f984600163ffffffff610ad916565b815260200160008152602001600081526020016000815250905060008751905080604051908082528060200260200182016040528015610843578160200160208202803883390190505b50955080604051908082528060200260200182016040528015610870578160200160208202803883390190505b5094506108808989848989610d5a565b50505050935093915050565b82546001810184556000906108a2858286610ea1565b82156108c4576108b6856000838787610be3565b6108c4858286866001610c0f565b949350505050565b8054600090801561090e578260000160018203815481106108e957fe5b600091825260209091200154600160401b90046001600160c01b031691506103a69050565b50600092915050565b6000828152600284016020908152604080832084845290915281206108c4906108cc565b8254801580610979575083546001600160401b038416908590600019810190811061096257fe5b6000918252602090912001546001600160401b0316105b156109e957604080518082019091526001600160401b0380851682526001600160c01b0380851660208085019182528854600181018a5560008a8152919091209451940180549151909216600160401b0293831667ffffffffffffffff1990911617909116919091179055610abc565b60008460000160018303815481106109fd57fe5b6000918252602091829020018054604080518082019091528381527f434845434b504f494e545f43414e4e4f545f4144445f504153545f56414c5545938101939093529092506001600160401b03868116911614610a9c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b5080546001600160401b0316600160401b6001600160c01b038516021790555b50505050565b6000610ad083600084610917565b90505b92915050565b600082821115604051806040016040528060128152602001714d4154485f5355425f554e444552464c4f5760701b81525090610b565760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b5050900390565b6040805180820190915260118152704d4154485f4144445f4f564552464c4f5760781b60208201526000908383019084821015610bdb5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b509392505050565b60008481526002860160209081526040808320868452909152902061065190838363ffffffff6103cc16565b600019846000610c1e88610395565b905060015b818111610c895760049390931b92918316916000610c428a8386610917565b9050600086610c6057610c5b828963ffffffff610ad916565b610c70565b610c70828963ffffffff610b5d16565b9050610c7f8b84878c85610be3565b5050600101610c23565b50831580610ca1575084610c9e898385610917565b10155b6040518060400160405280601881526020017753554d5f545245455f5550444154455f4f564552464c4f5760401b81525090610d1e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b505050505050505050565b600080610d368484610d45565b90506108c48482600086610efa565b6000610ad0600184018363ffffffff610f2e16565b6020830151600090610d7390600463ffffffff610f3a16565b905060005b6010811015610574578551856060015110610d9257610574565b6040850151600090610dac9083851b63ffffffff610b5d16565b90506000610dc4898860200151848a60000151610efa565b90506000610ddf828960800151610b5d90919063ffffffff16565b90506000610df28a8a6060015184610fce565b90508015610e91576020890151610e1a57610e15896060015182868b878c61100c565b610e76565b610e22611131565b6040518060a001604052808b600001516001600160401b0316815260200160018c602001510381526020018681526020018b6060015181526020018b608001518152509050610e748c8c838c8c610d5a565b505b6060890151610e8b908263ffffffff610b5d16565b60608a01525b5060808801525050600101610d78565b6000610eac84610395565b9050610eb88184611054565b15610abc57600181016000610ece868483610917565b9050610ede868360008785610be3565b610ef260018701858463ffffffff6103cc16565b505050505050565b600083815260028501602090815260408083208584529091528120610f25908363ffffffff610f2e16565b95945050505050565b6000610ad0838361107a565b600082610f4957506000610ad3565b82820282848281610f5657fe5b0414604051806040016040528060118152602001704d4154485f4d554c5f4f564552464c4f5760781b81525090610bdb5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b6000825b845181108015610ff4575082858281518110610fea57fe5b6020026020010151105b1561100157600101610fd2565b929092039392505050565b60005b858110156105745784848289018151811061102657fe5b60200260200101818152505082828289018151811061104157fe5b602090810291909101015260010161100f565b60008061106884600463ffffffff610f3a16565b600019901b8316151591505092915050565b81546000908061108e576000915050610ad3565b83546000198201906000908690839081106110a557fe5b9060005260206000200190505b6000821180156110ce575080546001600160401b038087169116115b156110f9578554600019909201918690839081106110e857fe5b9060005260206000200190506110b2565b80546001600160401b03808716911611611124578054600160401b90046001600160c01b0316611127565b60005b9695505050505050565b6040518060a0016040528060006001600160401b0316815260200160008152602001600081526020016000815260200160008152509056fe1a2dc18f5a2dabdf3809a83ec652290b81d97d915bf5561908090bad91deffc4a265627a7a723158203cbc6f4cace0de44e9daf971c3f2078801b681102326908a3e8467360ca4689964736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100835760003560e01c80630ef26743146100885780632ddbd13a146100a2578063391f0ac2146100aa5780638a9b2f2c146100d8578063b8aa19e5146100e0578063ce48a3281461011a578063e1c7392a1461014c578063ea1652fa14610154578063fec5bc7e146101cd575b600080fd5b6100906101f9565b60408051918252519081900360200190f35b61009061020a565b6100d6600480360360408110156100c057600080fd5b506001600160401b038135169060200135610216565b005b61009061024b565b6100d6600480360360808110156100f657600080fd5b508035906001600160401b0360208201351690604081013590606001351515610251565b6100d66004803603606081101561013057600080fd5b508035906001600160401b036020820135169060400135610294565b6100d66102d5565b6100d66004803603604081101561016a57600080fd5b81019060208101813564010000000081111561018557600080fd5b82018360208201111561019757600080fd5b803590602001918460208302840111640100000000831117156101b957600080fd5b9193509150356001600160401b03166102e1565b6100d6600480360360408110156101e357600080fd5b506001600160401b038135169060200135610355565b60006102056000610395565b905090565b600061020560006103ab565b6000815b801561022e5760019091019060041c61021a565b5060008290556102466001848363ffffffff6103cc16565b505050565b60005490565b60005a905061026a60008686868663ffffffff61049a16565b60008051602061116a8339815191525a604080519184038252519081900360200190a15050505050565b60005a90506102ac600085858563ffffffff61057d16565b60008051602061116a8339815191525a604080519184038252519081900360200190a150505050565b6102df6000610658565b565b60005a905061032a84848080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509392508691505063ffffffff61067516565b505060008051602061116a8339815191525a604080519184038252519081900360200190a150505050565b60005a905061036c6000848463ffffffff61088c16565b5060008051602061116a8339815191525a604080519184038252519081900360200190a1505050565b60006103a3826001016108cc565b90505b919050565b6000806103b783610395565b90506103c583826000610917565b9392505050565b604080518082019091526018815277434845434b504f494e545f56414c55455f544f4f5f42494760401b60208201526001600160c01b0382111561048e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561045357818101518382015260200161043b565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061024683838361093b565b845460408051808201909152601b81527a14d55357d514915157d2d15657d113d154d7d393d517d1561254d5602a1b602082015290851061051c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b5060006105298686610ac2565b905060008261054757610542828563ffffffff610ad916565b610557565b610557828563ffffffff610b5d16565b9050610567876000888885610be3565b6105748787878787610c0f565b50505050505050565b835460408051808201909152601b81527a14d55357d514915157d2d15657d113d154d7d393d517d1561254d5602a1b60208201529084106105ff5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b50600061060c8585610ac2565b905061061c856000868686610be3565b80821115610639576106348585858486036001610c0f565b610651565b80821015610651576106518585858585036000610c0f565b5050505050565b61066f60018281019060009063ffffffff6103cc16565b60009055565b60608060008451116040518060400160405280601e81526020017f53554d5f545245455f4d495353494e475f5345415243485f56414c5545530000815250906106ff5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b50600061070c8685610d29565b905060008111801561073457508460018651038151811061072957fe5b602002602001015181115b6040518060400160405280601d81526020017f53554d5f545245455f5345415243485f4f55545f4f465f424f554e4453000000815250906107b65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b5060006107c38786610d45565b90506107cd611131565b6040805160a081019091526001600160401b0387168152602081016107f984600163ffffffff610ad916565b815260200160008152602001600081526020016000815250905060008751905080604051908082528060200260200182016040528015610843578160200160208202803883390190505b50955080604051908082528060200260200182016040528015610870578160200160208202803883390190505b5094506108808989848989610d5a565b50505050935093915050565b82546001810184556000906108a2858286610ea1565b82156108c4576108b6856000838787610be3565b6108c4858286866001610c0f565b949350505050565b8054600090801561090e578260000160018203815481106108e957fe5b600091825260209091200154600160401b90046001600160c01b031691506103a69050565b50600092915050565b6000828152600284016020908152604080832084845290915281206108c4906108cc565b8254801580610979575083546001600160401b038416908590600019810190811061096257fe5b6000918252602090912001546001600160401b0316105b156109e957604080518082019091526001600160401b0380851682526001600160c01b0380851660208085019182528854600181018a5560008a8152919091209451940180549151909216600160401b0293831667ffffffffffffffff1990911617909116919091179055610abc565b60008460000160018303815481106109fd57fe5b6000918252602091829020018054604080518082019091528381527f434845434b504f494e545f43414e4e4f545f4144445f504153545f56414c5545938101939093529092506001600160401b03868116911614610a9c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b5080546001600160401b0316600160401b6001600160c01b038516021790555b50505050565b6000610ad083600084610917565b90505b92915050565b600082821115604051806040016040528060128152602001714d4154485f5355425f554e444552464c4f5760701b81525090610b565760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b5050900390565b6040805180820190915260118152704d4154485f4144445f4f564552464c4f5760781b60208201526000908383019084821015610bdb5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b509392505050565b60008481526002860160209081526040808320868452909152902061065190838363ffffffff6103cc16565b600019846000610c1e88610395565b905060015b818111610c895760049390931b92918316916000610c428a8386610917565b9050600086610c6057610c5b828963ffffffff610ad916565b610c70565b610c70828963ffffffff610b5d16565b9050610c7f8b84878c85610be3565b5050600101610c23565b50831580610ca1575084610c9e898385610917565b10155b6040518060400160405280601881526020017753554d5f545245455f5550444154455f4f564552464c4f5760401b81525090610d1e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b505050505050505050565b600080610d368484610d45565b90506108c48482600086610efa565b6000610ad0600184018363ffffffff610f2e16565b6020830151600090610d7390600463ffffffff610f3a16565b905060005b6010811015610574578551856060015110610d9257610574565b6040850151600090610dac9083851b63ffffffff610b5d16565b90506000610dc4898860200151848a60000151610efa565b90506000610ddf828960800151610b5d90919063ffffffff16565b90506000610df28a8a6060015184610fce565b90508015610e91576020890151610e1a57610e15896060015182868b878c61100c565b610e76565b610e22611131565b6040518060a001604052808b600001516001600160401b0316815260200160018c602001510381526020018681526020018b6060015181526020018b608001518152509050610e748c8c838c8c610d5a565b505b6060890151610e8b908263ffffffff610b5d16565b60608a01525b5060808801525050600101610d78565b6000610eac84610395565b9050610eb88184611054565b15610abc57600181016000610ece868483610917565b9050610ede868360008785610be3565b610ef260018701858463ffffffff6103cc16565b505050505050565b600083815260028501602090815260408083208584529091528120610f25908363ffffffff610f2e16565b95945050505050565b6000610ad0838361107a565b600082610f4957506000610ad3565b82820282848281610f5657fe5b0414604051806040016040528060118152602001704d4154485f4d554c5f4f564552464c4f5760781b81525090610bdb5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045357818101518382015260200161043b565b6000825b845181108015610ff4575082858281518110610fea57fe5b6020026020010151105b1561100157600101610fd2565b929092039392505050565b60005b858110156105745784848289018151811061102657fe5b60200260200101818152505082828289018151811061104157fe5b602090810291909101015260010161100f565b60008061106884600463ffffffff610f3a16565b600019901b8316151591505092915050565b81546000908061108e576000915050610ad3565b83546000198201906000908690839081106110a557fe5b9060005260206000200190505b6000821180156110ce575080546001600160401b038087169116115b156110f9578554600019909201918690839081106110e857fe5b9060005260206000200190506110b2565b80546001600160401b03808716911611611124578054600160401b90046001600160c01b0316611127565b60005b9695505050505050565b6040518060a0016040528060006001600160401b0316815260200160008152602001600081526020016000815260200160008152509056fe1a2dc18f5a2dabdf3809a83ec652290b81d97d915bf5561908090bad91deffc4a265627a7a723158203cbc6f4cace0de44e9daf971c3f2078801b681102326908a3e8467360ca4689964736f6c63430005110032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
