{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IOracle",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "Module_OnlyOracle",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "RequestFinalized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ORACLE",
      "outputs": [
        {
          "internalType": "contract IOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "decodeRequestData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "treeData",
              "type": "bytes"
            },
            {
              "internalType": "bytes32[]",
              "name": "leavesToInsert",
              "type": "bytes32[]"
            },
            {
              "internalType": "contract ITreeVerifier",
              "name": "treeVerifier",
              "type": "address"
            },
            {
              "internalType": "contract IAccountingExtension",
              "name": "accountingExtension",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "paymentToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "paymentAmount",
              "type": "uint256"
            }
          ],
          "internalType": "struct ISparseMerkleTreeRequestModule.RequestParameters",
          "name": "_params",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "finalizeRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "moduleName",
      "outputs": [
        {
          "internalType": "string",
          "name": "_moduleName",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        }
      ],
      "name": "requestData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "_requestData",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "setupRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60a060405234801561001057600080fd5b5060405161117438038061117483398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516110c06100b46000396000818160d801528181610141015281816101b60152818161024f015281816102d8015281816103a301526107b101526110c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806338013f021161005b57806338013f02146100d35780634d610a461461011f5780637dc0d1d01461013f57806393f0899a1461016557600080fd5b80632e76be2a14610082578063309de607146100975780633661346b146100aa575b600080fd5b6100956100903660046108cf565b61019e565b005b6100956100a5366004610970565b610237565b6100bd6100b83660046109a0565b6105e0565b6040516100ca9190610a09565b60405180910390f35b6100fa7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ca565b61013261012d3660046109a0565b61067a565b6040516100ca9190610a23565b7f00000000000000000000000000000000000000000000000000000000000000006100fa565b60408051808201909152601d81527f5370617273654d65726b6c6554726565526571756573744d6f64756c6500000060208201526100bd565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461020d576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152602081905260409020610226828483610bd1565b5061023283838361075c565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a6576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffb1e61ca000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063fb1e61ca9060240161014060405180830381865afa158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610d7f565b6040517f163ed02f0000000000000000000000000000000000000000000000000000000081526004810185905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063163ed02f90602401600060405180830381865afa1580156103ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104129190810190610e99565b9050600061041f8561067a565b8251909150156104e457606081015160c08401516020840151608084015160a08501516040517fcab0e418000000000000000000000000000000000000000000000000000000008152600481018b905273ffffffffffffffffffffffffffffffffffffffff948516602482015292841660448401529083166064830152608482015291169063cab0e4189060a401600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b5050505061058e565b606081015160c0840151608083015160a08401516040517fa6d09dc800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481018a90529183166044830152606482015291169063a6d09dc890608401600060405180830381600087803b15801561057557600080fd5b505af1158015610589573d6000803e3d6000fd5b505050505b60405173ffffffffffffffffffffffffffffffffffffffff8516815285907f898b6025fbfa120421d24d3735eb8c51885040c2ba00c10ffe007e3356f058ff9060200160405180910390a25050505050565b600060208190529081526040902080546105f990610b30565b80601f016020809104026020016040519081016040528092919081815260200182805461062590610b30565b80156106725780601f1061064757610100808354040283529160200191610672565b820191906000526020600020905b81548152906001019060200180831161065557829003601f168201915b505050505081565b6040805160c081018252606080825260208201819052600092820183905281018290526080810182905260a0810191909152600082815260208190526040902080546106c590610b30565b80601f01602080910402602001604051908101604052809291908181526020018280546106f190610b30565b801561073e5780601f106107135761010080835404028352916020019161073e565b820191906000526020600020905b81548152906001019060200180831161072157829003601f168201915b50505050508060200190518101906107569190610fb9565b92915050565b60006107678461067a565b6040517ffb1e61ca0000000000000000000000000000000000000000000000000000000081526004810186905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063fb1e61ca9060240161014060405180830381865afa1580156107f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081d9190610d7f565b606083015160c0820151608085015160a08601516040517fbba9f26f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481018b905291831660448301526064820152929350169063bba9f26f90608401600060405180830381600087803b1580156108b057600080fd5b505af11580156108c4573d6000803e3d6000fd5b505050505050505050565b6000806000604084860312156108e457600080fd5b83359250602084013567ffffffffffffffff8082111561090357600080fd5b818601915086601f83011261091757600080fd5b81358181111561092657600080fd5b87602082850101111561093857600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461096d57600080fd5b50565b6000806040838503121561098357600080fd5b8235915060208301356109958161094b565b809150509250929050565b6000602082840312156109b257600080fd5b5035919050565b60005b838110156109d45781810151838201526020016109bc565b50506000910152565b600081518084526109f58160208601602086016109b9565b601f01601f19169290920160200192915050565b602081526000610a1c60208301846109dd565b9392505050565b60006020808352835160c082850152610a3f60e08501826109dd565b85830151858203601f19016040870152805180835290840192506000918401905b80831015610a805783518252928401926001929092019190840190610a60565b50604087015173ffffffffffffffffffffffffffffffffffffffff811660608801529350606087015173ffffffffffffffffffffffffffffffffffffffff811660808801529350608087015173ffffffffffffffffffffffffffffffffffffffff811660a0880152935060a087015160c08701528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680610b4457607f821691505b602082108103610b7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561023257600081815260208120601f850160051c81016020861015610baa5750805b601f850160051c820191505b81811015610bc957828155600101610bb6565b505050505050565b67ffffffffffffffff831115610be957610be9610b01565b610bfd83610bf78354610b30565b83610b83565b6000601f841160018114610c4f5760008515610c195750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610cc7565b600083815260209020601f19861690835b82811015610c805786850135825560209485019460019092019101610c60565b5086821015610cbb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604051610140810167ffffffffffffffff81118282101715610cf257610cf2610b01565b60405290565b60405160a0810167ffffffffffffffff81118282101715610cf257610cf2610b01565b60405160c0810167ffffffffffffffff81118282101715610cf257610cf2610b01565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d6757610d67610b01565b604052919050565b8051610d7a8161094b565b919050565b60006101408284031215610d9257600080fd5b610d9a610cce565b82518152610daa60208401610d6f565b6020820152610dbb60408401610d6f565b6040820152610dcc60608401610d6f565b6060820152610ddd60808401610d6f565b6080820152610dee60a08401610d6f565b60a0820152610dff60c08401610d6f565b60c082015260e083810151908201526101008084015190820152610120928301519281019290925250919050565b600082601f830112610e3e57600080fd5b815167ffffffffffffffff811115610e5857610e58610b01565b610e6b6020601f19601f84011601610d3e565b818152846020838601011115610e8057600080fd5b610e918260208301602087016109b9565b949350505050565b600060208284031215610eab57600080fd5b815167ffffffffffffffff80821115610ec357600080fd5b9083019060a08286031215610ed757600080fd5b610edf610cf8565b825181526020830151610ef18161094b565b806020830152506040830151604082015260608301516060820152608083015182811115610f1e57600080fd5b610f2a87828601610e2d565b60808301525095945050505050565b600082601f830112610f4a57600080fd5b8151602067ffffffffffffffff821115610f6657610f66610b01565b8160051b610f75828201610d3e565b9283528481018201928281019087851115610f8f57600080fd5b83870192505b84831015610fae57825182529183019190830190610f95565b979650505050505050565b600060208284031215610fcb57600080fd5b815167ffffffffffffffff80821115610fe357600080fd5b9083019060c08286031215610ff757600080fd5b610fff610d1b565b82518281111561100e57600080fd5b61101a87828601610e2d565b82525060208301518281111561102f57600080fd5b61103b87828601610f39565b60208301525061104d60408401610d6f565b604082015261105e60608401610d6f565b606082015261106f60808401610d6f565b608082015260a083015160a08201528093505050509291505056fea2646970667358221220a830d804c2056cf460d59c4107005178082323add54d7e284924752b10f9e92a64736f6c63430008130033",
    "sourceMap": "425:2063:49:-:0;;;510:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;353:16:0;;;425:2063:49;;14:306:113;100:6;153:2;141:9;132:7;128:23;124:32;121:52;;;169:1;166;159:12;121:52;195:16;;-1:-1:-1;;;;;240:31:113;;230:42;;220:70;;286:1;283;276:12;220:70;309:5;14:306;-1:-1:-1;;;14:306:113:o;:::-;425:2063:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806338013f021161005b57806338013f02146100d35780634d610a461461011f5780637dc0d1d01461013f57806393f0899a1461016557600080fd5b80632e76be2a14610082578063309de607146100975780633661346b146100aa575b600080fd5b6100956100903660046108cf565b61019e565b005b6100956100a5366004610970565b610237565b6100bd6100b83660046109a0565b6105e0565b6040516100ca9190610a09565b60405180910390f35b6100fa7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ca565b61013261012d3660046109a0565b61067a565b6040516100ca9190610a23565b7f00000000000000000000000000000000000000000000000000000000000000006100fa565b60408051808201909152601d81527f5370617273654d65726b6c6554726565526571756573744d6f64756c6500000060208201526100bd565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461020d576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152602081905260409020610226828483610bd1565b5061023283838361075c565b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102a6576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffb1e61ca000000000000000000000000000000000000000000000000000000008152600481018390526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063fb1e61ca9060240161014060405180830381865afa158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610d7f565b6040517f163ed02f0000000000000000000000000000000000000000000000000000000081526004810185905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063163ed02f90602401600060405180830381865afa1580156103ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104129190810190610e99565b9050600061041f8561067a565b8251909150156104e457606081015160c08401516020840151608084015160a08501516040517fcab0e418000000000000000000000000000000000000000000000000000000008152600481018b905273ffffffffffffffffffffffffffffffffffffffff948516602482015292841660448401529083166064830152608482015291169063cab0e4189060a401600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b5050505061058e565b606081015160c0840151608083015160a08401516040517fa6d09dc800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481018a90529183166044830152606482015291169063a6d09dc890608401600060405180830381600087803b15801561057557600080fd5b505af1158015610589573d6000803e3d6000fd5b505050505b60405173ffffffffffffffffffffffffffffffffffffffff8516815285907f898b6025fbfa120421d24d3735eb8c51885040c2ba00c10ffe007e3356f058ff9060200160405180910390a25050505050565b600060208190529081526040902080546105f990610b30565b80601f016020809104026020016040519081016040528092919081815260200182805461062590610b30565b80156106725780601f1061064757610100808354040283529160200191610672565b820191906000526020600020905b81548152906001019060200180831161065557829003601f168201915b505050505081565b6040805160c081018252606080825260208201819052600092820183905281018290526080810182905260a0810191909152600082815260208190526040902080546106c590610b30565b80601f01602080910402602001604051908101604052809291908181526020018280546106f190610b30565b801561073e5780601f106107135761010080835404028352916020019161073e565b820191906000526020600020905b81548152906001019060200180831161072157829003601f168201915b50505050508060200190518101906107569190610fb9565b92915050565b60006107678461067a565b6040517ffb1e61ca0000000000000000000000000000000000000000000000000000000081526004810186905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063fb1e61ca9060240161014060405180830381865afa1580156107f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081d9190610d7f565b606083015160c0820151608085015160a08601516040517fbba9f26f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481018b905291831660448301526064820152929350169063bba9f26f90608401600060405180830381600087803b1580156108b057600080fd5b505af11580156108c4573d6000803e3d6000fd5b505050505050505050565b6000806000604084860312156108e457600080fd5b83359250602084013567ffffffffffffffff8082111561090357600080fd5b818601915086601f83011261091757600080fd5b81358181111561092657600080fd5b87602082850101111561093857600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff8116811461096d57600080fd5b50565b6000806040838503121561098357600080fd5b8235915060208301356109958161094b565b809150509250929050565b6000602082840312156109b257600080fd5b5035919050565b60005b838110156109d45781810151838201526020016109bc565b50506000910152565b600081518084526109f58160208601602086016109b9565b601f01601f19169290920160200192915050565b602081526000610a1c60208301846109dd565b9392505050565b60006020808352835160c082850152610a3f60e08501826109dd565b85830151858203601f19016040870152805180835290840192506000918401905b80831015610a805783518252928401926001929092019190840190610a60565b50604087015173ffffffffffffffffffffffffffffffffffffffff811660608801529350606087015173ffffffffffffffffffffffffffffffffffffffff811660808801529350608087015173ffffffffffffffffffffffffffffffffffffffff811660a0880152935060a087015160c08701528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c90821680610b4457607f821691505b602082108103610b7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561023257600081815260208120601f850160051c81016020861015610baa5750805b601f850160051c820191505b81811015610bc957828155600101610bb6565b505050505050565b67ffffffffffffffff831115610be957610be9610b01565b610bfd83610bf78354610b30565b83610b83565b6000601f841160018114610c4f5760008515610c195750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610cc7565b600083815260209020601f19861690835b82811015610c805786850135825560209485019460019092019101610c60565b5086821015610cbb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604051610140810167ffffffffffffffff81118282101715610cf257610cf2610b01565b60405290565b60405160a0810167ffffffffffffffff81118282101715610cf257610cf2610b01565b60405160c0810167ffffffffffffffff81118282101715610cf257610cf2610b01565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d6757610d67610b01565b604052919050565b8051610d7a8161094b565b919050565b60006101408284031215610d9257600080fd5b610d9a610cce565b82518152610daa60208401610d6f565b6020820152610dbb60408401610d6f565b6040820152610dcc60608401610d6f565b6060820152610ddd60808401610d6f565b6080820152610dee60a08401610d6f565b60a0820152610dff60c08401610d6f565b60c082015260e083810151908201526101008084015190820152610120928301519281019290925250919050565b600082601f830112610e3e57600080fd5b815167ffffffffffffffff811115610e5857610e58610b01565b610e6b6020601f19601f84011601610d3e565b818152846020838601011115610e8057600080fd5b610e918260208301602087016109b9565b949350505050565b600060208284031215610eab57600080fd5b815167ffffffffffffffff80821115610ec357600080fd5b9083019060a08286031215610ed757600080fd5b610edf610cf8565b825181526020830151610ef18161094b565b806020830152506040830151604082015260608301516060820152608083015182811115610f1e57600080fd5b610f2a87828601610e2d565b60808301525095945050505050565b600082601f830112610f4a57600080fd5b8151602067ffffffffffffffff821115610f6657610f66610b01565b8160051b610f75828201610d3e565b9283528481018201928281019087851115610f8f57600080fd5b83870192505b84831015610fae57825182529183019190830190610f95565b979650505050505050565b600060208284031215610fcb57600080fd5b815167ffffffffffffffff80821115610fe357600080fd5b9083019060c08286031215610ff757600080fd5b610fff610d1b565b82518281111561100e57600080fd5b61101a87828601610e2d565b82525060208301518281111561102f57600080fd5b61103b87828601610f39565b60208301525061104d60408401610d6f565b604082015261105e60608401610d6f565b606082015261106f60808401610d6f565b608082015260a083015160a08201528093505050509291505056fea2646970667358221220a830d804c2056cf460d59c4107005178082323add54d7e284924752b10f9e92a64736f6c63430008130033",
    "sourceMap": "425:2063:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:175:0;;;;;;:::i;:::-;;:::i;:::-;;1575:911:49;;;;;;:::i;:::-;;:::i;237:68:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;201:31;;;;;;;;2486:42:113;2474:55;;;2456:74;;2444:2;2429:18;201:31:0;2294:242:113;766:179:49;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;571:94:0:-;653:6;571:94;;587:126:49;663:45;;;;;;;;;;;;;;;;;587:126;;695:175:0;472:10;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;791:11:::1;:23:::0;;;::::1;::::0;;;;;;:31:::1;817:5:::0;;791:23;:31:::1;:::i;:::-;;828:37;847:10;859:5;;828:18;:37::i;:::-;695:175:::0;;;:::o;1575:911:49:-;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;1761:29:49::1;::::0;;;;::::1;::::0;::::1;7417:25:113::0;;;1727:31:49::1;::::0;1761:6:::1;:17;;::::0;::::1;::::0;7390:18:113;;1761:29:49::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1832:39;::::0;;;;::::1;::::0;::::1;7417:25:113::0;;;1727:63:49;;-1:-1:-1;1796:33:49::1;::::0;1832:27:::1;:6;:27;::::0;::::1;::::0;7390:18:113;;1832:39:49::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;1832:39:49::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;1796:75;;1877:32;1912:29;1930:10;1912:17;:29::i;:::-;1951:19:::0;;1877:64;;-1:-1:-1;1951:24:49;1947:484:::1;;1985:27;::::0;::::1;::::0;2067:18:::1;::::0;::::1;::::0;2106::::1;::::0;::::1;::::0;2142:20:::1;::::0;::::1;::::0;2181:21:::1;::::0;::::1;::::0;1985:226:::1;::::0;;;;::::1;::::0;::::1;11574:25:113::0;;;1985:31:49::1;11696:15:113::0;;;11676:18;;;11669:43;11748:15;;;11728:18;;;11721:43;11800:15;;;11780:18;;;11773:43;11832:19;;;11825:35;1985:31:49;::::1;::::0;::::1;::::0;11546:19:113;;1985:226:49::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1947:484;;;2232:27;::::0;::::1;::::0;2287:18:::1;::::0;::::1;::::0;2355:20:::1;::::0;::::1;::::0;2394:21:::1;::::0;::::1;::::0;2232:192:::1;::::0;;;;:35:::1;12196:15:113::0;;;2232:192:49::1;::::0;::::1;12178:34:113::0;12228:18;;;12221:34;;;12291:15;;;12271:18;;;12264:43;12323:18;;;12316:34;2232:35:49;::::1;::::0;::::1;::::0;12089:19:113;;2232:192:49::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1947:484;2441:40;::::0;2486:42:113;2474:55;;2456:74;;2458:10:49;;2441:40:::1;::::0;2444:2:113;2429:18;2441:40:49::1;;;;;;;1721:765;;;1575:911:::0;;:::o;237:68:0:-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;766:179:49:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:11:49;:23;;;;;;;;;;884:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;874:66;766:179;-1:-1:-1;;766:179:49:o;1111:411::-;1199:32;1234:29;1252:10;1234:17;:29::i;:::-;1303;;;;;;;;7417:25:113;;;1199:64:49;;-1:-1:-1;1269:31:49;;1303:17;:6;:17;;;;7390:18:113;;1303:29:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1338:27;;;;1388:18;;;;1452:20;;;;1489:21;;;;1338:179;;;;;:32;12196:15:113;;;1338:179:49;;;12178:34:113;12228:18;;;12221:34;;;12291:15;;;12271:18;;;12264:43;12323:18;;;12316:34;1269:63:49;;-1:-1:-1;1338:32:49;;;;12089:19:113;;1338:179:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1193:329;;1111:411;;;:::o;14:659:113:-;93:6;101;109;162:2;150:9;141:7;137:23;133:32;130:52;;;178:1;175;168:12;130:52;214:9;201:23;191:33;;275:2;264:9;260:18;247:32;298:18;339:2;331:6;328:14;325:34;;;355:1;352;345:12;325:34;393:6;382:9;378:22;368:32;;438:7;431:4;427:2;423:13;419:27;409:55;;460:1;457;450:12;409:55;500:2;487:16;526:2;518:6;515:14;512:34;;;542:1;539;532:12;512:34;587:7;582:2;573:6;569:2;565:15;561:24;558:37;555:57;;;608:1;605;598:12;555:57;639:2;635;631:11;621:21;;661:6;651:16;;;;;14:659;;;;;:::o;678:154::-;764:42;757:5;753:54;746:5;743:65;733:93;;822:1;819;812:12;733:93;678:154;:::o;837:315::-;905:6;913;966:2;954:9;945:7;941:23;937:32;934:52;;;982:1;979;972:12;934:52;1018:9;1005:23;995:33;;1078:2;1067:9;1063:18;1050:32;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1131:15;;;837:315;;;;;:::o;1157:180::-;1216:6;1269:2;1257:9;1248:7;1244:23;1240:32;1237:52;;;1285:1;1282;1275:12;1237:52;-1:-1:-1;1308:23:113;;1157:180;-1:-1:-1;1157:180:113:o;1342:250::-;1427:1;1437:113;1451:6;1448:1;1445:13;1437:113;;;1527:11;;;1521:18;1508:11;;;1501:39;1473:2;1466:10;1437:113;;;-1:-1:-1;;1584:1:113;1566:16;;1559:27;1342:250::o;1597:329::-;1638:3;1676:5;1670:12;1703:6;1698:3;1691:19;1719:76;1788:6;1781:4;1776:3;1772:14;1765:4;1758:5;1754:16;1719:76;:::i;:::-;1840:2;1828:15;-1:-1:-1;;1824:88:113;1815:98;;;;1915:4;1811:109;;1597:329;-1:-1:-1;;1597:329:113:o;1931:217::-;2078:2;2067:9;2060:21;2041:4;2098:44;2138:2;2127:9;2123:18;2115:6;2098:44;:::i;:::-;2090:52;1931:217;-1:-1:-1;;;1931:217:113:o;2541:1408::-;2705:4;2734:2;2763;2752:9;2745:21;2801:6;2795:13;2844:4;2839:2;2828:9;2824:18;2817:32;2872:51;2918:3;2907:9;2903:19;2889:12;2872:51;:::i;:::-;2960:15;;;2954:22;3016;;;-1:-1:-1;;3012:95:113;3007:2;2992:18;;2985:123;3157:21;;3187:22;;;3263:23;;;;-1:-1:-1;3304:1:113;;3225:15;;;3314:169;3328:6;3325:1;3322:13;3314:169;;;3389:13;;3377:26;;3458:15;;;;3350:1;3343:9;;;;;3423:12;;;;3314:169;;;-1:-1:-1;3532:2:113;3520:15;;3514:22;2239:42;2228:54;;3604:2;3589:18;;2216:67;3514:22;-1:-1:-1;3657:2:113;3645:15;;3639:22;2239:42;2228:54;;3729:3;3714:19;;2216:67;3639:22;-1:-1:-1;3783:3:113;3771:16;;3765:23;2239:42;2228:54;;3856:3;3841:19;;2216:67;3765:23;-1:-1:-1;3917:3:113;3909:6;3905:16;3899:23;3892:4;3881:9;3877:20;3870:53;3940:3;3932:11;;;;;;2541:1408;;;;:::o;4409:184::-;4461:77;4458:1;4451:88;4558:4;4555:1;4548:15;4582:4;4579:1;4572:15;4598:437;4677:1;4673:12;;;;4720;;;4741:61;;4795:4;4787:6;4783:17;4773:27;;4741:61;4848:2;4840:6;4837:14;4817:18;4814:38;4811:218;;4885:77;4882:1;4875:88;4986:4;4983:1;4976:15;5014:4;5011:1;5004:15;4811:218;;4598:437;;;:::o;5165:544::-;5266:2;5261:3;5258:11;5255:448;;;5302:1;5327:5;5323:2;5316:17;5372:4;5368:2;5358:19;5442:2;5430:10;5426:19;5423:1;5419:27;5413:4;5409:38;5478:4;5466:10;5463:20;5460:47;;;-1:-1:-1;5501:4:113;5460:47;5556:2;5551:3;5547:12;5544:1;5540:20;5534:4;5530:31;5520:41;;5611:82;5629:2;5622:5;5619:13;5611:82;;;5674:17;;;5655:1;5644:13;5611:82;;;5615:3;;;5165:544;;;:::o;5945:1321::-;6067:18;6062:3;6059:27;6056:53;;;6089:18;;:::i;:::-;6118:93;6207:3;6167:38;6199:4;6193:11;6167:38;:::i;:::-;6161:4;6118:93;:::i;:::-;6237:1;6262:2;6257:3;6254:11;6279:1;6274:734;;;;7052:1;7069:3;7066:93;;;-1:-1:-1;7125:19:113;;;7112:33;7066:93;5851:66;5842:1;5838:11;;;5834:84;5830:89;5820:100;5926:1;5922:11;;;5817:117;7172:78;;6247:1013;;6274:734;5112:1;5105:14;;;5149:4;5136:18;;-1:-1:-1;;6310:76:113;;;6469:9;6491:229;6505:7;6502:1;6499:14;6491:229;;;6594:19;;;6581:33;6566:49;;6701:4;6686:20;;;;6654:1;6642:14;;;;6521:12;6491:229;;;6495:3;6748;6739:7;6736:16;6733:219;;;6868:66;6862:3;6856;6853:1;6849:11;6845:21;6841:94;6837:99;6824:9;6819:3;6815:19;6802:33;6798:139;6790:6;6783:155;6733:219;;;6995:1;6989:3;6986:1;6982:11;6978:19;6972:4;6965:33;6247:1013;;;5945:1321;;;:::o;7453:252::-;7525:2;7519:9;7567:3;7555:16;;7601:18;7586:34;;7622:22;;;7583:62;7580:88;;;7648:18;;:::i;:::-;7684:2;7677:22;7453:252;:::o;7710:253::-;7782:2;7776:9;7824:4;7812:17;;7859:18;7844:34;;7880:22;;;7841:62;7838:88;;;7906:18;;:::i;7968:253::-;8040:2;8034:9;8082:4;8070:17;;8117:18;8102:34;;8138:22;;;8099:62;8096:88;;;8164:18;;:::i;8226:334::-;8297:2;8291:9;8353:2;8343:13;;-1:-1:-1;;8339:86:113;8327:99;;8456:18;8441:34;;8477:22;;;8438:62;8435:88;;;8503:18;;:::i;:::-;8539:2;8532:22;8226:334;;-1:-1:-1;8226:334:113:o;8565:154::-;8660:13;;8682:31;8660:13;8682:31;:::i;:::-;8565:154;;;:::o;8724:1097::-;8819:6;8872:3;8860:9;8851:7;8847:23;8843:33;8840:53;;;8889:1;8886;8879:12;8840:53;8915:22;;:::i;:::-;8966:9;8960:16;8953:5;8946:31;9009:65;9070:2;9059:9;9055:18;9009:65;:::i;:::-;9004:2;8997:5;8993:14;8986:89;9107:65;9168:2;9157:9;9153:18;9107:65;:::i;:::-;9102:2;9095:5;9091:14;9084:89;9205:65;9266:2;9255:9;9251:18;9205:65;:::i;:::-;9200:2;9193:5;9189:14;9182:89;9304:66;9365:3;9354:9;9350:19;9304:66;:::i;:::-;9298:3;9291:5;9287:15;9280:91;9404:66;9465:3;9454:9;9450:19;9404:66;:::i;:::-;9398:3;9391:5;9387:15;9380:91;9504:66;9565:3;9554:9;9550:19;9504:66;:::i;:::-;9498:3;9487:15;;9480:91;9625:3;9610:19;;;9604:26;9587:15;;;9580:51;9650:3;9691:18;;;9685:25;9669:14;;;9662:49;9730:3;9771:18;;;9765:25;9749:14;;;9742:49;;;;-1:-1:-1;9491:5:113;8724:1097;-1:-1:-1;8724:1097:113:o;9826:568::-;9879:5;9932:3;9925:4;9917:6;9913:17;9909:27;9899:55;;9950:1;9947;9940:12;9899:55;9979:6;9973:13;10005:18;10001:2;9998:26;9995:52;;;10027:18;;:::i;:::-;10071:114;10179:4;-1:-1:-1;;10103:4:113;10099:2;10095:13;10091:86;10087:97;10071:114;:::i;:::-;10210:2;10201:7;10194:19;10256:3;10249:4;10244:2;10236:6;10232:15;10228:26;10225:35;10222:55;;;10273:1;10270;10263:12;10222:55;10286:77;10360:2;10353:4;10344:7;10340:18;10333:4;10325:6;10321:17;10286:77;:::i;:::-;10381:7;9826:568;-1:-1:-1;;;;9826:568:113:o;10399:896::-;10495:6;10548:2;10536:9;10527:7;10523:23;10519:32;10516:52;;;10564:1;10561;10554:12;10516:52;10597:9;10591:16;10626:18;10667:2;10659:6;10656:14;10653:34;;;10683:1;10680;10673:12;10653:34;10706:22;;;;10762:4;10744:16;;;10740:27;10737:47;;;10780:1;10777;10770:12;10737:47;10806:22;;:::i;:::-;10857:2;10851:9;10844:5;10837:24;10899:2;10895;10891:11;10885:18;10912:33;10937:7;10912:33;:::i;:::-;10977:7;10972:2;10965:5;10961:14;10954:31;;11031:2;11027;11023:11;11017:18;11012:2;11005:5;11001:14;10994:42;11082:2;11078;11074:11;11068:18;11063:2;11056:5;11052:14;11045:42;11126:3;11122:2;11118:12;11112:19;11156:2;11146:8;11143:16;11140:36;;;11172:1;11169;11162:12;11140:36;11209:55;11256:7;11245:8;11241:2;11237:17;11209:55;:::i;:::-;11203:3;11192:15;;11185:80;-1:-1:-1;11196:5:113;10399:896;-1:-1:-1;;;;;10399:896:113:o;12361:709::-;12426:5;12479:3;12472:4;12464:6;12460:17;12456:27;12446:55;;12497:1;12494;12487:12;12446:55;12526:6;12520:13;12552:4;12575:18;12571:2;12568:26;12565:52;;;12597:18;;:::i;:::-;12643:2;12640:1;12636:10;12666:28;12690:2;12686;12682:11;12666:28;:::i;:::-;12728:15;;;12798;;;12794:24;;;12759:12;;;;12830:15;;;12827:35;;;12858:1;12855;12848:12;12827:35;12894:2;12886:6;12882:15;12871:26;;12906:135;12922:6;12917:3;12914:15;12906:135;;;12988:10;;12976:23;;12939:12;;;;13019;;;;12906:135;;;13059:5;12361:709;-1:-1:-1;;;;;;;12361:709:113:o;13075:1143::-;13181:6;13234:2;13222:9;13213:7;13209:23;13205:32;13202:52;;;13250:1;13247;13240:12;13202:52;13283:9;13277:16;13312:18;13353:2;13345:6;13342:14;13339:34;;;13369:1;13366;13359:12;13339:34;13392:22;;;;13448:4;13430:16;;;13426:27;13423:47;;;13466:1;13463;13456:12;13423:47;13492:22;;:::i;:::-;13545:2;13539:9;13573:2;13563:8;13560:16;13557:36;;;13589:1;13586;13579:12;13557:36;13616:55;13663:7;13652:8;13648:2;13644:17;13616:55;:::i;:::-;13609:5;13602:70;;13711:2;13707;13703:11;13697:18;13740:2;13730:8;13727:16;13724:36;;;13756:1;13753;13746:12;13724:36;13792:67;13851:7;13840:8;13836:2;13832:17;13792:67;:::i;:::-;13787:2;13780:5;13776:14;13769:91;;13892:58;13946:2;13942;13938:11;13892:58;:::i;:::-;13887:2;13880:5;13876:14;13869:82;13983:58;14037:2;14033;14029:11;13983:58;:::i;:::-;13978:2;13971:5;13967:14;13960:82;14075:59;14129:3;14125:2;14121:12;14075:59;:::i;:::-;14069:3;14062:5;14058:15;14051:84;14182:3;14178:2;14174:12;14168:19;14162:3;14155:5;14151:15;14144:44;14207:5;14197:15;;;;;13075:1143;;;;:::o",
    "linkReferences": {},
    "immutableReferences": {
      "10": [
        {
          "start": 216,
          "length": 32
        },
        {
          "start": 321,
          "length": 32
        },
        {
          "start": 438,
          "length": 32
        },
        {
          "start": 591,
          "length": 32
        },
        {
          "start": 728,
          "length": 32
        },
        {
          "start": 931,
          "length": 32
        },
        {
          "start": 1969,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "ORACLE()": "38013f02",
    "decodeRequestData(bytes32)": "4d610a46",
    "finalizeRequest(bytes32,address)": "309de607",
    "moduleName()": "93f0899a",
    "oracle()": "7dc0d1d0",
    "requestData(bytes32)": "3661346b",
    "setupRequest(bytes32,bytes)": "2e76be2a"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IOracle\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Module_OnlyOracle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"RequestFinalized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ORACLE\",\"outputs\":[{\"internalType\":\"contract IOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"decodeRequestData\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"treeData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"leavesToInsert\",\"type\":\"bytes32[]\"},{\"internalType\":\"contract ITreeVerifier\",\"name\":\"treeVerifier\",\"type\":\"address\"},{\"internalType\":\"contract IAccountingExtension\",\"name\":\"accountingExtension\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISparseMerkleTreeRequestModule.RequestParameters\",\"name\":\"_params\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"finalizeRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moduleName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_moduleName\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"}],\"name\":\"requestData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"_requestData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"setupRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"RequestFinalized(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request that was finalized\"}}},\"kind\":\"dev\",\"methods\":{\"decodeRequestData(bytes32)\":{\"params\":{\"_requestId\":\"The ID of the request\"},\"returns\":{\"_params\":\"The struct containing the parameters for the request\"}},\"finalizeRequest(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address of the user who triggered the finalization of the request\",\"_requestId\":\"The ID of the request being finalized\"}},\"moduleName()\":{\"returns\":{\"_moduleName\":\"The name of the module.\"}},\"oracle()\":{\"returns\":{\"_oracle\":\"The address of the oracle\"}},\"setupRequest(bytes32,bytes)\":{\"params\":{\"_data\":\"The data of the request\",\"_requestId\":\"The ID of the request\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Module_OnlyOracle()\":[{\"notice\":\"Thrown when the caller is not the oracle\"}]},\"events\":{\"RequestFinalized(bytes32,address)\":{\"notice\":\"Emitted when a request is finalized\"}},\"kind\":\"user\",\"methods\":{\"decodeRequestData(bytes32)\":{\"notice\":\"Returns the decoded data for a request\"},\"finalizeRequest(bytes32,address)\":{\"notice\":\"Called by the Oracle to finalize the request by paying the proposer for the response or releasing the requester's bond if no response was submitted\"},\"moduleName()\":{\"notice\":\"Returns the name of the module.\"},\"oracle()\":{\"notice\":\"Returns the address of the oracle\"},\"requestData(bytes32)\":{\"notice\":\"Returns the data of the request associated with the provided id\"},\"setupRequest(bytes32,bytes)\":{\"notice\":\"Stores the request data and runs module-specific hooks\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/modules/request/SparseMerkleTreeRequestModule.sol\":\"SparseMerkleTreeRequestModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@defi-wonderland/=node_modules/@defi-wonderland/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":solmate/=node_modules/solmate/src/\"]},\"sources\":{\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol\":{\"keccak256\":\"0xb528e0eea66984412d038db1edcbfe77ac642089975fae6b0b44e8be13319bbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e70d520407288d43d7c735fd7355502b514ba6feacaeb4a5dd86497e3f91eb41\",\"dweb:/ipfs/QmPXY7uXjnsFacp6VpL45bMrxCZGtQ8AAnecTXC9ASkpV7\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol\":{\"keccak256\":\"0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f\",\"dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol\":{\"keccak256\":\"0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823\",\"dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol\":{\"keccak256\":\"0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d\",\"dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol\":{\"keccak256\":\"0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e\",\"dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol\":{\"keccak256\":\"0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d\",\"dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol\":{\"keccak256\":\"0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67\",\"dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno\"]},\"node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol\":{\"keccak256\":\"0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf\",\"dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"solidity/contracts/modules/request/SparseMerkleTreeRequestModule.sol\":{\"keccak256\":\"0x2245837f377be93bf72ae7770993f52bd024443500e902d1bdd28544d39a8628\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c9abe45ed76ed4333606db99ea51f70e64f54366160c97da94cb56754d6834c\",\"dweb:/ipfs/QmXsk38Zt397FhkowV739J5qMNRnZa8uG2Qgcc636cHs2P\"]},\"solidity/interfaces/ITreeVerifier.sol\":{\"keccak256\":\"0xa972e97e192769f790d29df93d4c20c85a4e2a71a4944b876af8f878e776dae3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dd99fd1f44780363b631b139038b6e4bed18384078588dec0dc367f4efac0e\",\"dweb:/ipfs/QmSATnXhsANXpLPpbr6XNuoqx2yURHccco4z4iGHiq92je\"]},\"solidity/interfaces/extensions/IAccountingExtension.sol\":{\"keccak256\":\"0x31b990f92e67ce2b480ca97fcc54d44dddaa82fa60259439d8556bfbb7963d0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23e6ef2026bf40ef58f625b7377c70e4988902ae14df333e9be35129a57a87f0\",\"dweb:/ipfs/QmW1RfXvujkVHqXazdeTKshba9rX6kzSCRfZKBwLi38Ue5\"]},\"solidity/interfaces/modules/request/ISparseMerkleTreeRequestModule.sol\":{\"keccak256\":\"0x598707433eb0d621df7756b0fb6be1d20b94a3446bc28828180885a5229f5bec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dec4668bc0ffc04f25e4cea33d763584cc644e4e298def6cf493fcfb8c8e6f0\",\"dweb:/ipfs/QmXcenZegssWzvbYTX8dCzUYBWjqVktmjhZumL6UBKfxoy\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.19+commit.7dd6d404"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "contract IOracle",
              "name": "_oracle",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Module_OnlyOracle"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "RequestFinalized",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "ORACLE",
          "outputs": [
            {
              "internalType": "contract IOracle",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "decodeRequestData",
          "outputs": [
            {
              "internalType": "struct ISparseMerkleTreeRequestModule.RequestParameters",
              "name": "_params",
              "type": "tuple",
              "components": [
                {
                  "internalType": "bytes",
                  "name": "treeData",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes32[]",
                  "name": "leavesToInsert",
                  "type": "bytes32[]"
                },
                {
                  "internalType": "contract ITreeVerifier",
                  "name": "treeVerifier",
                  "type": "address"
                },
                {
                  "internalType": "contract IAccountingExtension",
                  "name": "accountingExtension",
                  "type": "address"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "paymentToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "paymentAmount",
                  "type": "uint256"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "finalizeRequest"
        },
        {
          "inputs": [],
          "stateMutability": "pure",
          "type": "function",
          "name": "moduleName",
          "outputs": [
            {
              "internalType": "string",
              "name": "_moduleName",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "oracle",
          "outputs": [
            {
              "internalType": "address",
              "name": "_oracle",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "requestData",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "_requestData",
              "type": "bytes"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setupRequest"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "decodeRequestData(bytes32)": {
            "params": {
              "_requestId": "The ID of the request"
            },
            "returns": {
              "_params": "The struct containing the parameters for the request"
            }
          },
          "finalizeRequest(bytes32,address)": {
            "params": {
              "_finalizer": "The address of the user who triggered the finalization of the request",
              "_requestId": "The ID of the request being finalized"
            }
          },
          "moduleName()": {
            "returns": {
              "_moduleName": "The name of the module."
            }
          },
          "oracle()": {
            "returns": {
              "_oracle": "The address of the oracle"
            }
          },
          "setupRequest(bytes32,bytes)": {
            "params": {
              "_data": "The data of the request",
              "_requestId": "The ID of the request"
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "decodeRequestData(bytes32)": {
            "notice": "Returns the decoded data for a request"
          },
          "finalizeRequest(bytes32,address)": {
            "notice": "Called by the Oracle to finalize the request by paying the proposer for the response or releasing the requester's bond if no response was submitted"
          },
          "moduleName()": {
            "notice": "Returns the name of the module."
          },
          "oracle()": {
            "notice": "Returns the address of the oracle"
          },
          "requestData(bytes32)": {
            "notice": "Returns the data of the request associated with the provided id"
          },
          "setupRequest(bytes32,bytes)": {
            "notice": "Stores the request data and runs module-specific hooks"
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@defi-wonderland/=node_modules/@defi-wonderland/",
        "@openzeppelin/=node_modules/@openzeppelin/",
        "ds-test/=node_modules/ds-test/src/",
        "forge-std/=node_modules/forge-std/src/",
        "solmate/=node_modules/solmate/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "solidity/contracts/modules/request/SparseMerkleTreeRequestModule.sol": "SparseMerkleTreeRequestModule"
      },
      "libraries": {}
    },
    "sources": {
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol": {
        "keccak256": "0xb528e0eea66984412d038db1edcbfe77ac642089975fae6b0b44e8be13319bbf",
        "urls": [
          "bzz-raw://e70d520407288d43d7c735fd7355502b514ba6feacaeb4a5dd86497e3f91eb41",
          "dweb:/ipfs/QmPXY7uXjnsFacp6VpL45bMrxCZGtQ8AAnecTXC9ASkpV7"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IModule.sol": {
        "keccak256": "0x72c2f68e8c2b749d9ae745269c706b137a640d6bd6f65f966238b547d61e3a05",
        "urls": [
          "bzz-raw://4edb1aae7c4abd875d2da44a2dd83781c3c0a3d059edf2d1f2be1c44f865456f",
          "dweb:/ipfs/QmbEHy8tENha1ANEEZADpH4THmqC8aHyCXxFYPw4tS5mf4"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol": {
        "keccak256": "0x606262b4bb3b1447b1f6afef8a1b49088956b168a4b066f6f60da4712b95d3cf",
        "urls": [
          "bzz-raw://a763cdb6ba9f12a93e3d5238d6d3235c5c0c229df94793927f9d2abe00542823",
          "dweb:/ipfs/QmbAbfVyCiHvNvhHxc5r8tK5GUuVBATo15Ma5MirhZPtE6"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/dispute/IDisputeModule.sol": {
        "keccak256": "0x21707db43d55ba040893ef0ffefa7f9740c6e03b94d750637e6b2c047a16baa4",
        "urls": [
          "bzz-raw://ae582ca2fdd6fc82c650333066c95a917221282ad7ef15ea62fb4a31e4ed864d",
          "dweb:/ipfs/QmdxvkpNCK46uYv31TxAtxCiRPSoxbT4hrs94WQfR4ctTM"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/finality/IFinalityModule.sol": {
        "keccak256": "0xf6f465732ee119879e3317227f9cf6468055f4f98acdb4365f5b4eacda32948e",
        "urls": [
          "bzz-raw://82e1928a7bbc5bce95e1b83d917e1470c72a0bec7494f6f42471b21c0f2b641e",
          "dweb:/ipfs/QmSjaBsNhzCfQd5xwZa98LNYSZ1TqAqo6inRTGD31ua4L8"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/request/IRequestModule.sol": {
        "keccak256": "0xefa5dd3334a1676cca1c1860c66c16adb1e399917742476d15de8737b5cb0032",
        "urls": [
          "bzz-raw://03bcff0500f4054b5f71b0badd1779f8dfaa7fc74fc64788991438a1d9d2d14d",
          "dweb:/ipfs/QmdDjbGPgBfbbyT26Xtt9uBD7nYnhSK43fa9skfuBrfjCc"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/resolution/IResolutionModule.sol": {
        "keccak256": "0x36e75a87661b234be605a7455c88eaf4e7cbc9f5b4ea08133dd6d9d5af8d6bc6",
        "urls": [
          "bzz-raw://232536c4e8b2e9114035e57360976ff24931459fb22a026114d392d3e315ea67",
          "dweb:/ipfs/QmPYKU5RDGMqTZZzCCvVy7ssush4EQGgCCbzbeGpnejGno"
        ],
        "license": "MIT"
      },
      "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/modules/response/IResponseModule.sol": {
        "keccak256": "0xd0610065a22a8d3323427d871a73b835e4d0dffb3afe4bb7e8bbee81b8b9ed1b",
        "urls": [
          "bzz-raw://8c72dcbd36f11e87fc21c922684e5524f0c83830dc945ac92614ea1cd770a1bf",
          "dweb:/ipfs/QmfYnQfSDd2jS9QEAdpmDF6wVXWqitQpmJsSeEHs1mtUQP"
        ],
        "license": "MIT"
      },
      "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305",
        "urls": [
          "bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5",
          "dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"
        ],
        "license": "MIT"
      },
      "solidity/contracts/modules/request/SparseMerkleTreeRequestModule.sol": {
        "keccak256": "0x2245837f377be93bf72ae7770993f52bd024443500e902d1bdd28544d39a8628",
        "urls": [
          "bzz-raw://6c9abe45ed76ed4333606db99ea51f70e64f54366160c97da94cb56754d6834c",
          "dweb:/ipfs/QmXsk38Zt397FhkowV739J5qMNRnZa8uG2Qgcc636cHs2P"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/ITreeVerifier.sol": {
        "keccak256": "0xa972e97e192769f790d29df93d4c20c85a4e2a71a4944b876af8f878e776dae3",
        "urls": [
          "bzz-raw://42dd99fd1f44780363b631b139038b6e4bed18384078588dec0dc367f4efac0e",
          "dweb:/ipfs/QmSATnXhsANXpLPpbr6XNuoqx2yURHccco4z4iGHiq92je"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/extensions/IAccountingExtension.sol": {
        "keccak256": "0x31b990f92e67ce2b480ca97fcc54d44dddaa82fa60259439d8556bfbb7963d0e",
        "urls": [
          "bzz-raw://23e6ef2026bf40ef58f625b7377c70e4988902ae14df333e9be35129a57a87f0",
          "dweb:/ipfs/QmW1RfXvujkVHqXazdeTKshba9rX6kzSCRfZKBwLi38Ue5"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/modules/request/ISparseMerkleTreeRequestModule.sol": {
        "keccak256": "0x598707433eb0d621df7756b0fb6be1d20b94a3446bc28828180885a5229f5bec",
        "urls": [
          "bzz-raw://2dec4668bc0ffc04f25e4cea33d763584cc644e4e298def6cf493fcfb8c8e6f0",
          "dweb:/ipfs/QmXcenZegssWzvbYTX8dCzUYBWjqVktmjhZumL6UBKfxoy"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/contracts/modules/request/SparseMerkleTreeRequestModule.sol",
    "id": 38608,
    "exportedSymbols": {
      "IModule": [
        1782
      ],
      "IOracle": [
        2282
      ],
      "ISparseMerkleTreeRequestModule": [
        43429
      ],
      "Module": [
        98
      ],
      "SparseMerkleTreeRequestModule": [
        38607
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:2457:49",
    "nodes": [
      {
        "id": 38429,
        "nodeType": "PragmaDirective",
        "src": "32:24:49",
        "nodes": [],
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 38432,
        "nodeType": "ImportDirective",
        "src": "104:102:49",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/contracts/Module.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 38608,
        "sourceUnit": 99,
        "symbolAliases": [
          {
            "foreign": {
              "id": 38430,
              "name": "Module",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 98,
              "src": "112:6:49",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 38431,
              "name": "IModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 1782,
              "src": "120:7:49",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 38434,
        "nodeType": "ImportDirective",
        "src": "207:96:49",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "file": "@defi-wonderland/prophet-core-contracts/solidity/interfaces/IOracle.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 38608,
        "sourceUnit": 2283,
        "symbolAliases": [
          {
            "foreign": {
              "id": 38433,
              "name": "IOracle",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2282,
              "src": "215:7:49",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 38436,
        "nodeType": "ImportDirective",
        "src": "305:118:49",
        "nodes": [],
        "absolutePath": "solidity/interfaces/modules/request/ISparseMerkleTreeRequestModule.sol",
        "file": "../../../interfaces/modules/request/ISparseMerkleTreeRequestModule.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 38608,
        "sourceUnit": 43430,
        "symbolAliases": [
          {
            "foreign": {
              "id": 38435,
              "name": "ISparseMerkleTreeRequestModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 43429,
              "src": "313:30:49",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 38607,
        "nodeType": "ContractDefinition",
        "src": "425:2063:49",
        "nodes": [
          {
            "id": 38450,
            "nodeType": "FunctionDefinition",
            "src": "510:47:49",
            "nodes": [],
            "body": {
              "id": 38449,
              "nodeType": "Block",
              "src": "555:2:49",
              "nodes": [],
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 38446,
                    "name": "_oracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 38443,
                    "src": "546:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  }
                ],
                "id": 38447,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 38445,
                  "name": "Module",
                  "nameLocations": [
                    "539:6:49"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 98,
                  "src": "539:6:49"
                },
                "nodeType": "ModifierInvocation",
                "src": "539:15:49"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 38444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 38443,
                  "mutability": "mutable",
                  "name": "_oracle",
                  "nameLocation": "530:7:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 38450,
                  "src": "522:15:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracle_$2282",
                    "typeString": "contract IOracle"
                  },
                  "typeName": {
                    "id": 38442,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 38441,
                      "name": "IOracle",
                      "nameLocations": [
                        "522:7:49"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2282,
                      "src": "522:7:49"
                    },
                    "referencedDeclaration": 2282,
                    "src": "522:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "521:17:49"
            },
            "returnParameters": {
              "id": 38448,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "555:0:49"
            },
            "scope": 38607,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 38461,
            "nodeType": "FunctionDefinition",
            "src": "587:126:49",
            "nodes": [],
            "body": {
              "id": 38460,
              "nodeType": "Block",
              "src": "657:56:49",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 38458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 38456,
                      "name": "_moduleName",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 38454,
                      "src": "663:11:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "5370617273654d65726b6c6554726565526571756573744d6f64756c65",
                      "id": 38457,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "677:31:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_be1004f680b88682cfc05704cf03bca9f47e48aa027c4f28c7e0cc524f86046e",
                        "typeString": "literal_string \"SparseMerkleTreeRequestModule\""
                      },
                      "value": "SparseMerkleTreeRequestModule"
                    },
                    "src": "663:45:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 38459,
                  "nodeType": "ExpressionStatement",
                  "src": "663:45:49"
                }
              ]
            },
            "baseFunctions": [
              1781
            ],
            "documentation": {
              "id": 38451,
              "nodeType": "StructuredDocumentation",
              "src": "561:23:49",
              "text": "@inheritdoc IModule"
            },
            "functionSelector": "93f0899a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "moduleName",
            "nameLocation": "596:10:49",
            "parameters": {
              "id": 38452,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "606:2:49"
            },
            "returnParameters": {
              "id": 38455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 38454,
                  "mutability": "mutable",
                  "name": "_moduleName",
                  "nameLocation": "644:11:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 38461,
                  "src": "630:25:49",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 38453,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "630:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "629:27:49"
            },
            "scope": 38607,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 38482,
            "nodeType": "FunctionDefinition",
            "src": "766:179:49",
            "nodes": [],
            "body": {
              "id": 38481,
              "nodeType": "Block",
              "src": "868:77:49",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 38479,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 38470,
                      "name": "_params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 38468,
                      "src": "874:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                        "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 38473,
                            "name": "requestData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14,
                            "src": "895:11:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 38475,
                          "indexExpression": {
                            "id": 38474,
                            "name": "_requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38464,
                            "src": "907:10:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "895:23:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 38476,
                              "name": "RequestParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43411,
                              "src": "921:17:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43411_storage_ptr_$",
                                "typeString": "type(struct ISparseMerkleTreeRequestModule.RequestParameters storage pointer)"
                              }
                            }
                          ],
                          "id": 38477,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "920:19:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43411_storage_ptr_$",
                            "typeString": "type(struct ISparseMerkleTreeRequestModule.RequestParameters storage pointer)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          },
                          {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43411_storage_ptr_$",
                            "typeString": "type(struct ISparseMerkleTreeRequestModule.RequestParameters storage pointer)"
                          }
                        ],
                        "expression": {
                          "id": 38471,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "884:3:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 38472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "888:6:49",
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "884:10:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 38478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "884:56:49",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                        "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                      }
                    },
                    "src": "874:66:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                      "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                    }
                  },
                  "id": 38480,
                  "nodeType": "ExpressionStatement",
                  "src": "874:66:49"
                }
              ]
            },
            "baseFunctions": [
              43420
            ],
            "documentation": {
              "id": 38462,
              "nodeType": "StructuredDocumentation",
              "src": "717:46:49",
              "text": "@inheritdoc ISparseMerkleTreeRequestModule"
            },
            "functionSelector": "4d610a46",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decodeRequestData",
            "nameLocation": "775:17:49",
            "parameters": {
              "id": 38465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 38464,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "801:10:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 38482,
                  "src": "793:18:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 38463,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "793:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "792:20:49"
            },
            "returnParameters": {
              "id": 38469,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 38468,
                  "mutability": "mutable",
                  "name": "_params",
                  "nameLocation": "859:7:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 38482,
                  "src": "834:32:49",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                    "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters"
                  },
                  "typeName": {
                    "id": 38467,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 38466,
                      "name": "RequestParameters",
                      "nameLocations": [
                        "834:17:49"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 43411,
                      "src": "834:17:49"
                    },
                    "referencedDeclaration": 43411,
                    "src": "834:17:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43411_storage_ptr",
                      "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "833:34:49"
            },
            "scope": 38607,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 38523,
            "nodeType": "FunctionDefinition",
            "src": "1111:411:49",
            "nodes": [],
            "body": {
              "id": 38522,
              "nodeType": "Block",
              "src": "1193:329:49",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    38493
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38493,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "1224:7:49",
                      "nodeType": "VariableDeclaration",
                      "scope": 38522,
                      "src": "1199:32:49",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                        "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 38492,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 38491,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "1199:17:49"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43411,
                          "src": "1199:17:49"
                        },
                        "referencedDeclaration": 43411,
                        "src": "1199:17:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43411_storage_ptr",
                          "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 38497,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 38495,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38485,
                        "src": "1252:10:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 38494,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 38482,
                      "src": "1234:17:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43411_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct ISparseMerkleTreeRequestModule.RequestParameters memory)"
                      }
                    },
                    "id": 38496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1234:29:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                      "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1199:64:49"
                },
                {
                  "assignments": [
                    38502
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38502,
                      "mutability": "mutable",
                      "name": "_request",
                      "nameLocation": "1292:8:49",
                      "nodeType": "VariableDeclaration",
                      "scope": 38522,
                      "src": "1269:31:49",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Request_$1954_memory_ptr",
                        "typeString": "struct IOracle.Request"
                      },
                      "typeName": {
                        "id": 38501,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 38500,
                          "name": "IOracle.Request",
                          "nameLocations": [
                            "1269:7:49",
                            "1277:7:49"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1954,
                          "src": "1269:15:49"
                        },
                        "referencedDeclaration": 1954,
                        "src": "1269:15:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$1954_storage_ptr",
                          "typeString": "struct IOracle.Request"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 38507,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 38505,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38485,
                        "src": "1321:10:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 38503,
                        "name": "ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1303:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracle_$2282",
                          "typeString": "contract IOracle"
                        }
                      },
                      "id": 38504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1310:10:49",
                      "memberName": "getRequest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2144,
                      "src": "1303:17:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Request_$1954_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct IOracle.Request memory)"
                      }
                    },
                    "id": 38506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1303:29:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$1954_memory_ptr",
                      "typeString": "struct IOracle.Request memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1269:63:49"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 38513,
                          "name": "_request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38502,
                          "src": "1388:8:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Request_$1954_memory_ptr",
                            "typeString": "struct IOracle.Request memory"
                          }
                        },
                        "id": 38514,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1397:9:49",
                        "memberName": "requester",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1947,
                        "src": "1388:18:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 38515,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38485,
                        "src": "1426:10:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 38516,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38493,
                          "src": "1452:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                            "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                          }
                        },
                        "id": 38517,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1460:12:49",
                        "memberName": "paymentToken",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43408,
                        "src": "1452:20:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2822",
                          "typeString": "contract IERC20"
                        }
                      },
                      {
                        "expression": {
                          "id": 38518,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38493,
                          "src": "1489:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                            "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                          }
                        },
                        "id": 38519,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1497:13:49",
                        "memberName": "paymentAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43410,
                        "src": "1489:21:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20_$2822",
                          "typeString": "contract IERC20"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 38508,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38493,
                          "src": "1338:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                            "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                          }
                        },
                        "id": 38511,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1346:19:49",
                        "memberName": "accountingExtension",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43405,
                        "src": "1338:27:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAccountingExtension_$42580",
                          "typeString": "contract IAccountingExtension"
                        }
                      },
                      "id": 38512,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1366:4:49",
                      "memberName": "bond",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 42530,
                      "src": "1338:32:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_contract$_IERC20_$2822_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,contract IERC20,uint256) external"
                      }
                    },
                    "id": 38520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "1379:7:49",
                      "1414:10:49",
                      "1444:6:49",
                      "1480:7:49"
                    ],
                    "names": [
                      "_bonder",
                      "_requestId",
                      "_token",
                      "_amount"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "1338:179:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 38521,
                  "nodeType": "ExpressionStatement",
                  "src": "1338:179:49"
                }
              ]
            },
            "baseFunctions": [
              97
            ],
            "documentation": {
              "id": 38483,
              "nodeType": "StructuredDocumentation",
              "src": "949:159:49",
              "text": " @notice Hook triggered after setting up a request. Bonds the requester's payment amount\n @param _requestId The ID of the request being setup"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterSetupRequest",
            "nameLocation": "1120:18:49",
            "overrides": {
              "id": 38489,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1184:8:49"
            },
            "parameters": {
              "id": 38488,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 38485,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "1147:10:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 38523,
                  "src": "1139:18:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 38484,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1139:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 38487,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 38523,
                  "src": "1159:14:49",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 38486,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1159:5:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1138:36:49"
            },
            "returnParameters": {
              "id": 38490,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1193:0:49"
            },
            "scope": 38607,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 38606,
            "nodeType": "FunctionDefinition",
            "src": "1575:911:49",
            "nodes": [],
            "body": {
              "id": 38605,
              "nodeType": "Block",
              "src": "1721:765:49",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    38540
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38540,
                      "mutability": "mutable",
                      "name": "_request",
                      "nameLocation": "1750:8:49",
                      "nodeType": "VariableDeclaration",
                      "scope": 38605,
                      "src": "1727:31:49",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Request_$1954_memory_ptr",
                        "typeString": "struct IOracle.Request"
                      },
                      "typeName": {
                        "id": 38539,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 38538,
                          "name": "IOracle.Request",
                          "nameLocations": [
                            "1727:7:49",
                            "1735:7:49"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1954,
                          "src": "1727:15:49"
                        },
                        "referencedDeclaration": 1954,
                        "src": "1727:15:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$1954_storage_ptr",
                          "typeString": "struct IOracle.Request"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 38545,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 38543,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38526,
                        "src": "1779:10:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 38541,
                        "name": "ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1761:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracle_$2282",
                          "typeString": "contract IOracle"
                        }
                      },
                      "id": 38542,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1768:10:49",
                      "memberName": "getRequest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2144,
                      "src": "1761:17:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Request_$1954_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct IOracle.Request memory)"
                      }
                    },
                    "id": 38544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1761:29:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$1954_memory_ptr",
                      "typeString": "struct IOracle.Request memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1727:63:49"
                },
                {
                  "assignments": [
                    38550
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38550,
                      "mutability": "mutable",
                      "name": "_response",
                      "nameLocation": "1820:9:49",
                      "nodeType": "VariableDeclaration",
                      "scope": 38605,
                      "src": "1796:33:49",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                        "typeString": "struct IOracle.Response"
                      },
                      "typeName": {
                        "id": 38549,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 38548,
                          "name": "IOracle.Response",
                          "nameLocations": [
                            "1796:7:49",
                            "1804:8:49"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 2031,
                          "src": "1796:16:49"
                        },
                        "referencedDeclaration": 2031,
                        "src": "1796:16:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Response_$2031_storage_ptr",
                          "typeString": "struct IOracle.Response"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 38555,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 38553,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38526,
                        "src": "1860:10:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 38551,
                        "name": "ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1832:6:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracle_$2282",
                          "typeString": "contract IOracle"
                        }
                      },
                      "id": 38552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1839:20:49",
                      "memberName": "getFinalizedResponse",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2258,
                      "src": "1832:27:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_Response_$2031_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct IOracle.Response memory)"
                      }
                    },
                    "id": 38554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1832:39:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                      "typeString": "struct IOracle.Response memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1796:75:49"
                },
                {
                  "assignments": [
                    38558
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38558,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "1902:7:49",
                      "nodeType": "VariableDeclaration",
                      "scope": 38605,
                      "src": "1877:32:49",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                        "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 38557,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 38556,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "1877:17:49"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43411,
                          "src": "1877:17:49"
                        },
                        "referencedDeclaration": 43411,
                        "src": "1877:17:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43411_storage_ptr",
                          "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 38562,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 38560,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38526,
                        "src": "1930:10:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 38559,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 38482,
                      "src": "1912:17:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43411_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct ISparseMerkleTreeRequestModule.RequestParameters memory)"
                      }
                    },
                    "id": 38561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1912:29:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                      "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1877:64:49"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 38566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 38563,
                        "name": "_response",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38550,
                        "src": "1951:9:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                          "typeString": "struct IOracle.Response memory"
                        }
                      },
                      "id": 38564,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1961:9:49",
                      "memberName": "createdAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2022,
                      "src": "1951:19:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 38565,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1974:1:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1951:24:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 38598,
                    "nodeType": "Block",
                    "src": "2224:207:49",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 38589,
                                "name": "_request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38540,
                                "src": "2287:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Request_$1954_memory_ptr",
                                  "typeString": "struct IOracle.Request memory"
                                }
                              },
                              "id": 38590,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2296:9:49",
                              "memberName": "requester",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1947,
                              "src": "2287:18:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 38591,
                              "name": "_requestId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38526,
                              "src": "2327:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 38592,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38558,
                                "src": "2355:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                                  "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                                }
                              },
                              "id": 38593,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2363:12:49",
                              "memberName": "paymentToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43408,
                              "src": "2355:20:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2822",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "expression": {
                                "id": 38594,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38558,
                                "src": "2394:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                                  "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                                }
                              },
                              "id": 38595,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2402:13:49",
                              "memberName": "paymentAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43410,
                              "src": "2394:21:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$2822",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 38584,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38558,
                                "src": "2232:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                                  "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                                }
                              },
                              "id": 38587,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2240:19:49",
                              "memberName": "accountingExtension",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43405,
                              "src": "2232:27:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAccountingExtension_$42580",
                                "typeString": "contract IAccountingExtension"
                              }
                            },
                            "id": 38588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2260:7:49",
                            "memberName": "release",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42558,
                            "src": "2232:35:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_contract$_IERC20_$2822_$_t_uint256_$returns$__$",
                              "typeString": "function (address,bytes32,contract IERC20,uint256) external"
                            }
                          },
                          "id": 38596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "2278:7:49",
                            "2315:10:49",
                            "2347:6:49",
                            "2385:7:49"
                          ],
                          "names": [
                            "_bonder",
                            "_requestId",
                            "_token",
                            "_amount"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "2232:192:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38597,
                        "nodeType": "ExpressionStatement",
                        "src": "2232:192:49"
                      }
                    ]
                  },
                  "id": 38599,
                  "nodeType": "IfStatement",
                  "src": "1947:484:49",
                  "trueBody": {
                    "id": 38583,
                    "nodeType": "Block",
                    "src": "1977:241:49",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 38572,
                              "name": "_requestId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38526,
                              "src": "2039:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 38573,
                                "name": "_request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38540,
                                "src": "2067:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Request_$1954_memory_ptr",
                                  "typeString": "struct IOracle.Request memory"
                                }
                              },
                              "id": 38574,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2076:9:49",
                              "memberName": "requester",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1947,
                              "src": "2067:18:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 38575,
                                "name": "_response",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38550,
                                "src": "2106:9:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                                  "typeString": "struct IOracle.Response memory"
                                }
                              },
                              "id": 38576,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2116:8:49",
                              "memberName": "proposer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2024,
                              "src": "2106:18:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 38577,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38558,
                                "src": "2142:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                                  "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                                }
                              },
                              "id": 38578,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2150:12:49",
                              "memberName": "paymentToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43408,
                              "src": "2142:20:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2822",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "expression": {
                                "id": 38579,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38558,
                                "src": "2181:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                                  "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                                }
                              },
                              "id": 38580,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2189:13:49",
                              "memberName": "paymentAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43410,
                              "src": "2181:21:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$2822",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 38567,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38558,
                                "src": "1985:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43411_memory_ptr",
                                  "typeString": "struct ISparseMerkleTreeRequestModule.RequestParameters memory"
                                }
                              },
                              "id": 38570,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1993:19:49",
                              "memberName": "accountingExtension",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43405,
                              "src": "1985:27:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAccountingExtension_$42580",
                                "typeString": "contract IAccountingExtension"
                              }
                            },
                            "id": 38571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2013:3:49",
                            "memberName": "pay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42517,
                            "src": "1985:31:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_contract$_IERC20_$2822_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,contract IERC20,uint256) external"
                            }
                          },
                          "id": 38581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "2027:10:49",
                            "2059:6:49",
                            "2095:9:49",
                            "2134:6:49",
                            "2172:7:49"
                          ],
                          "names": [
                            "_requestId",
                            "_payer",
                            "_receiver",
                            "_token",
                            "_amount"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "1985:226:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 38582,
                        "nodeType": "ExpressionStatement",
                        "src": "1985:226:49"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 38601,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38526,
                        "src": "2458:10:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 38602,
                        "name": "_finalizer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38528,
                        "src": "2470:10:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 38600,
                      "name": "RequestFinalized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1742,
                      "src": "2441:16:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 38603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2441:40:49",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 38604,
                  "nodeType": "EmitStatement",
                  "src": "2436:45:49"
                }
              ]
            },
            "baseFunctions": [
              88,
              43428
            ],
            "documentation": {
              "id": 38524,
              "nodeType": "StructuredDocumentation",
              "src": "1526:46:49",
              "text": "@inheritdoc ISparseMerkleTreeRequestModule"
            },
            "functionSelector": "309de607",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 38534,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 38533,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "1710:10:49"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "1710:10:49"
                },
                "nodeType": "ModifierInvocation",
                "src": "1710:10:49"
              }
            ],
            "name": "finalizeRequest",
            "nameLocation": "1584:15:49",
            "overrides": {
              "id": 38532,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 38530,
                  "name": "ISparseMerkleTreeRequestModule",
                  "nameLocations": [
                    "1670:30:49"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 43429,
                  "src": "1670:30:49"
                },
                {
                  "id": 38531,
                  "name": "Module",
                  "nameLocations": [
                    "1702:6:49"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 98,
                  "src": "1702:6:49"
                }
              ],
              "src": "1661:48:49"
            },
            "parameters": {
              "id": 38529,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 38526,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "1613:10:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 38606,
                  "src": "1605:18:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 38525,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1605:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 38528,
                  "mutability": "mutable",
                  "name": "_finalizer",
                  "nameLocation": "1637:10:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 38606,
                  "src": "1629:18:49",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 38527,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1629:7:49",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1599:52:49"
            },
            "returnParameters": {
              "id": 38535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1721:0:49"
            },
            "scope": 38607,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 38437,
              "name": "Module",
              "nameLocations": [
                "467:6:49"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 98,
              "src": "467:6:49"
            },
            "id": 38438,
            "nodeType": "InheritanceSpecifier",
            "src": "467:6:49"
          },
          {
            "baseName": {
              "id": 38439,
              "name": "ISparseMerkleTreeRequestModule",
              "nameLocations": [
                "475:30:49"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 43429,
              "src": "475:30:49"
            },
            "id": 38440,
            "nodeType": "InheritanceSpecifier",
            "src": "475:30:49"
          }
        ],
        "canonicalName": "SparseMerkleTreeRequestModule",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          38607,
          43429,
          2360,
          98,
          1782
        ],
        "name": "SparseMerkleTreeRequestModule",
        "nameLocation": "434:29:49",
        "scope": 38608,
        "usedErrors": [
          1745
        ]
      }
    ],
    "license": "MIT"
  },
  "id": 49
}