{
  "_format": "hh-sol-artifact-1",
  "contractName": "SparseMerkleProof",
  "sourceName": "contracts/lib/SparseMerkleProof.sol",
  "abi": [
    {
      "inputs": [],
      "name": "LengthNotMod32",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MaxTreeLeafIndexExceed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "expectedLength",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "bytesLength",
          "type": "uint256"
        }
      ],
      "name": "WrongBytesLength",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "expectedLength",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "actualLength",
          "type": "uint256"
        }
      ],
      "name": "WrongProofLength",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_encodedAccountValue",
          "type": "bytes"
        }
      ],
      "name": "getAccount",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            },
            {
              "internalType": "uint256",
              "name": "balance",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "storageRoot",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "mimcCodeHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "keccakCodeHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "codeSize",
              "type": "uint64"
            }
          ],
          "internalType": "struct SparseMerkleProof.Account",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_encodedLeaf",
          "type": "bytes"
        }
      ],
      "name": "getLeaf",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "prev",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "next",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "hKey",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "hValue",
              "type": "bytes32"
            }
          ],
          "internalType": "struct SparseMerkleProof.Leaf",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_value",
          "type": "bytes"
        }
      ],
      "name": "hashAccountValue",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_value",
          "type": "bytes32"
        }
      ],
      "name": "hashStorageValue",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_input",
          "type": "bytes"
        }
      ],
      "name": "mimcHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "_rawProof",
          "type": "bytes[]"
        },
        {
          "internalType": "uint256",
          "name": "_leafIndex",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_root",
          "type": "bytes32"
        }
      ],
      "name": "verifyProof",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60808060405234601957610c83908161001f823930815050f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80635ea5a98f146108b757806360f0f00f146108525780638c628e401461072e578063b893e579146106bb578063cc5c21ea146101225763ceeef5041461005e57600080fd5b60208060031936011261010a576100b381600435604051906001600160801b0381168383015260801c604082015260408152610099816109d6565b6040518093819263550f426f60e11b835260048301610a6b565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af4908115610116576000916100e4575b50604051908152f35b90508181813d831161010f575b6100fb81836109f2565b8101031261010a5751386100db565b600080fd5b503d6100f1565b6040513d6000823e3d90fd5b606036600319011261010a5760043567ffffffffffffffff80821161010a573660238301121561010a5781600401351161010a57366024826004013560051b8301011161010a57602a8160040135036106985760048101356001198101116105e857610195600482013560011901610b81565b906101a360405192836109f2565b6004810135600119018083526101b890610b81565b601f190136602084013760406101d5826004013560248401610b99565b905003610666576101ed816004013560248301610b99565b60209291921161010a5760048101356000198101919082116105e857602061022061023c93836004013560248501610bea565b60405163550f426f60e11b815294859283929060048401610ab4565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af491821561011657600092610632575b5060015b600482013560011901811061057e575061028f600482013560011981019060248401610bea565b90601f821661056c57600191815b8183018110610550575b5050506000146104ac575060006102bd84610c2c565b525b9164ffffffffff6024351161049a576000905b60288210610365576102fc60208486604051913583830152604082015260408152610099816109d6565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af4801561011657600090610332575b60209060405190604435148152f35b506020813d60201161035d575b8161034c602093836109f2565b8101031261010a5760209051610323565b3d915061033f565b9092600180602435861c161460001461040b5760206103a4916103888685610c39565b51906040519183830152604082015260408152610099816109d6565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af48015610116576000906103d8575b60019150935b01906102d2565b506020813d602011610403575b816103f2602093836109f2565b8101031261010a57600190516103cb565b3d91506103e5565b60206104369161041b8685610c39565b516040519183830152604082015260408152610099816109d6565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af4801561011657600090610467575b60019150936103d1565b506020813d602011610492575b81610481602093836109f2565b8101031261010a576001905161045d565b3d9150610474565b604051630382f09360e41b8152600490fd5b6104e6906020906104ca906004810135600119810191602401610bea565b60405163550f426f60e11b815293849283929060048401610ab4565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af49081156101165760009161051e575b5061051884610c2c565b526102bf565b90506020813d602011610548575b81610539602093836109f2565b8101031261010a57518461050e565b3d915061052c565b803561055e5760200161029d565b5050505060008580806102a7565b60405163398658fd60e21b8152600490fd5b80602061022061059693856004013560248701610bea565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af4918215610116576000926105fe575b506001196004840135828103820193910183116105e8576105e160019388610c39565b5201610268565b634e487b7160e01b600052601160045260246000fd5b9091506020813d60201161062a575b8161061a602093836109f2565b8101031261010a575190866105be565b3d915061060d565b9091506020813d60201161065e575b8161064e602093836109f2565b8101031261010a57519084610264565b3d9150610641565b61067a816024604493600401359101610b99565b905060405190637b45159f60e01b8252604060048301526024820152fd5b60449060405190637169558560e11b8252602a6004830152600401356024820152fd5b6106c960206104ca36610954565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af48015610116576000906106fb575b602090604051908152f35b506020813d602011610726575b81610715602093836109f2565b8101031261010a57602090516106f0565b3d9150610708565b61074061073a36610954565b90610af1565b60808101519067ffffffffffffffff8082511691602093848201519160408101518460a06060840151930151169360405196888801526040870152606086015260808501526001600160801b03811660a085015260801c60c084015260e083015260e082526101008201908282109082111761083c57604081905263550f426f60e11b8152828160ff19846107d9816101048101610a6b565b03018173__$3c7adb6f917e197635290081e29f5898ed$__5af491821561011657839060009361080d575b50604051838152f35b90809293503d8311610835575b61082481856109f2565b8101031261010a5751828281610804565b503d61081a565b634e487b7160e01b600052604160045260246000fd5b60c061086f61086036610954565b90610869610a39565b50610af1565b6040519060a067ffffffffffffffff918281511684526020810151602085015260408101516040850152606081015160608501526080810151608085015201511660a0820152f35b6108c036610954565b6108c8610a14565b506108d1610a14565b506080810361093557816080918101031261010a576040516080916108f58261099e565b8035918281526020810160208301358152606080604084019360408601358552019301358352604051938452516020840152516040830152516060820152f35b60449060405190637b45159f60e01b8252608060048301526024820152fd5b90602060031983011261010a5760043567ffffffffffffffff9283821161010a578060238301121561010a57816004013593841161010a576024848301011161010a576024019190565b6080810190811067ffffffffffffffff82111761083c57604052565b60c0810190811067ffffffffffffffff82111761083c57604052565b6060810190811067ffffffffffffffff82111761083c57604052565b90601f8019910116810190811067ffffffffffffffff82111761083c57604052565b60405190610a218261099e565b60006060838281528260208201528260408201520152565b60405190610a46826109ba565b8160a06000918281528260208201528260408201528260608201528260808201520152565b6020808252825181830181905290939260005b828110610aa057505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501610a7e565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b359067ffffffffffffffff8216820361010a57565b90610afa610a39565b5060c08103610b62578160c0918101031261010a57610b5a60a060405192610b21846109ba565b610b2a81610adc565b84526020810135602085015260408101356040850152606081013560608501526080810135608085015201610adc565b60a082015290565b60449060405190637b45159f60e01b825260c060048301526024820152fd5b67ffffffffffffffff811161083c5760051b60200190565b9015610bd457803590601e198136030182121561010a57019081359167ffffffffffffffff831161010a57602001823603811361010a579190565b634e487b7160e01b600052603260045260246000fd5b9190811015610bd45760051b81013590601e198136030182121561010a57019081359167ffffffffffffffff831161010a57602001823603811361010a579190565b805115610bd45760200190565b8051821015610bd45760209160051b01019056fea2646970667358221220010427ea5a8712fd267a5ada478d541855f0c30cd599d19748467effa6a7dc7064736f6c63430008190033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c80635ea5a98f146108b757806360f0f00f146108525780638c628e401461072e578063b893e579146106bb578063cc5c21ea146101225763ceeef5041461005e57600080fd5b60208060031936011261010a576100b381600435604051906001600160801b0381168383015260801c604082015260408152610099816109d6565b6040518093819263550f426f60e11b835260048301610a6b565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af4908115610116576000916100e4575b50604051908152f35b90508181813d831161010f575b6100fb81836109f2565b8101031261010a5751386100db565b600080fd5b503d6100f1565b6040513d6000823e3d90fd5b606036600319011261010a5760043567ffffffffffffffff80821161010a573660238301121561010a5781600401351161010a57366024826004013560051b8301011161010a57602a8160040135036106985760048101356001198101116105e857610195600482013560011901610b81565b906101a360405192836109f2565b6004810135600119018083526101b890610b81565b601f190136602084013760406101d5826004013560248401610b99565b905003610666576101ed816004013560248301610b99565b60209291921161010a5760048101356000198101919082116105e857602061022061023c93836004013560248501610bea565b60405163550f426f60e11b815294859283929060048401610ab4565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af491821561011657600092610632575b5060015b600482013560011901811061057e575061028f600482013560011981019060248401610bea565b90601f821661056c57600191815b8183018110610550575b5050506000146104ac575060006102bd84610c2c565b525b9164ffffffffff6024351161049a576000905b60288210610365576102fc60208486604051913583830152604082015260408152610099816109d6565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af4801561011657600090610332575b60209060405190604435148152f35b506020813d60201161035d575b8161034c602093836109f2565b8101031261010a5760209051610323565b3d915061033f565b9092600180602435861c161460001461040b5760206103a4916103888685610c39565b51906040519183830152604082015260408152610099816109d6565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af48015610116576000906103d8575b60019150935b01906102d2565b506020813d602011610403575b816103f2602093836109f2565b8101031261010a57600190516103cb565b3d91506103e5565b60206104369161041b8685610c39565b516040519183830152604082015260408152610099816109d6565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af4801561011657600090610467575b60019150936103d1565b506020813d602011610492575b81610481602093836109f2565b8101031261010a576001905161045d565b3d9150610474565b604051630382f09360e41b8152600490fd5b6104e6906020906104ca906004810135600119810191602401610bea565b60405163550f426f60e11b815293849283929060048401610ab4565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af49081156101165760009161051e575b5061051884610c2c565b526102bf565b90506020813d602011610548575b81610539602093836109f2565b8101031261010a57518461050e565b3d915061052c565b803561055e5760200161029d565b5050505060008580806102a7565b60405163398658fd60e21b8152600490fd5b80602061022061059693856004013560248701610bea565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af4918215610116576000926105fe575b506001196004840135828103820193910183116105e8576105e160019388610c39565b5201610268565b634e487b7160e01b600052601160045260246000fd5b9091506020813d60201161062a575b8161061a602093836109f2565b8101031261010a575190866105be565b3d915061060d565b9091506020813d60201161065e575b8161064e602093836109f2565b8101031261010a57519084610264565b3d9150610641565b61067a816024604493600401359101610b99565b905060405190637b45159f60e01b8252604060048301526024820152fd5b60449060405190637169558560e11b8252602a6004830152600401356024820152fd5b6106c960206104ca36610954565b038173__$3c7adb6f917e197635290081e29f5898ed$__5af48015610116576000906106fb575b602090604051908152f35b506020813d602011610726575b81610715602093836109f2565b8101031261010a57602090516106f0565b3d9150610708565b61074061073a36610954565b90610af1565b60808101519067ffffffffffffffff8082511691602093848201519160408101518460a06060840151930151169360405196888801526040870152606086015260808501526001600160801b03811660a085015260801c60c084015260e083015260e082526101008201908282109082111761083c57604081905263550f426f60e11b8152828160ff19846107d9816101048101610a6b565b03018173__$3c7adb6f917e197635290081e29f5898ed$__5af491821561011657839060009361080d575b50604051838152f35b90809293503d8311610835575b61082481856109f2565b8101031261010a5751828281610804565b503d61081a565b634e487b7160e01b600052604160045260246000fd5b60c061086f61086036610954565b90610869610a39565b50610af1565b6040519060a067ffffffffffffffff918281511684526020810151602085015260408101516040850152606081015160608501526080810151608085015201511660a0820152f35b6108c036610954565b6108c8610a14565b506108d1610a14565b506080810361093557816080918101031261010a576040516080916108f58261099e565b8035918281526020810160208301358152606080604084019360408601358552019301358352604051938452516020840152516040830152516060820152f35b60449060405190637b45159f60e01b8252608060048301526024820152fd5b90602060031983011261010a5760043567ffffffffffffffff9283821161010a578060238301121561010a57816004013593841161010a576024848301011161010a576024019190565b6080810190811067ffffffffffffffff82111761083c57604052565b60c0810190811067ffffffffffffffff82111761083c57604052565b6060810190811067ffffffffffffffff82111761083c57604052565b90601f8019910116810190811067ffffffffffffffff82111761083c57604052565b60405190610a218261099e565b60006060838281528260208201528260408201520152565b60405190610a46826109ba565b8160a06000918281528260208201528260408201528260608201528260808201520152565b6020808252825181830181905290939260005b828110610aa057505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501610a7e565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b359067ffffffffffffffff8216820361010a57565b90610afa610a39565b5060c08103610b62578160c0918101031261010a57610b5a60a060405192610b21846109ba565b610b2a81610adc565b84526020810135602085015260408101356040850152606081013560608501526080810135608085015201610adc565b60a082015290565b60449060405190637b45159f60e01b825260c060048301526024820152fd5b67ffffffffffffffff811161083c5760051b60200190565b9015610bd457803590601e198136030182121561010a57019081359167ffffffffffffffff831161010a57602001823603811361010a579190565b634e487b7160e01b600052603260045260246000fd5b9190811015610bd45760051b81013590601e198136030182121561010a57019081359167ffffffffffffffff831161010a57602001823603811361010a579190565b805115610bd45760200190565b8051821015610bd45760209160051b01019056fea2646970667358221220010427ea5a8712fd267a5ada478d541855f0c30cd599d19748467effa6a7dc7064736f6c63430008190033",
  "linkReferences": {
    "contracts/lib/Mimc.sol": {
      "Mimc": [
        {
          "length": 20,
          "start": 214
        },
        {
          "length": 20,
          "start": 607
        },
        {
          "length": 20,
          "start": 799
        },
        {
          "length": 20,
          "start": 967
        },
        {
          "length": 20,
          "start": 1113
        },
        {
          "length": 20,
          "start": 1289
        },
        {
          "length": 20,
          "start": 1465
        },
        {
          "length": 20,
          "start": 1772
        },
        {
          "length": 20,
          "start": 2045
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/lib/Mimc.sol": {
      "Mimc": [
        {
          "length": 20,
          "start": 183
        },
        {
          "length": 20,
          "start": 576
        },
        {
          "length": 20,
          "start": 768
        },
        {
          "length": 20,
          "start": 936
        },
        {
          "length": 20,
          "start": 1082
        },
        {
          "length": 20,
          "start": 1258
        },
        {
          "length": 20,
          "start": 1434
        },
        {
          "length": 20,
          "start": 1741
        },
        {
          "length": 20,
          "start": 2014
        }
      ]
    }
  }
}
