{
  "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": "bytes32",
          "name": "_responseId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "enum IOracle.DisputeStatus",
          "name": "_status",
          "type": "uint8"
        }
      ],
      "name": "DisputeStatusChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_finalizer",
          "type": "address"
        }
      ],
      "name": "RequestFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_responseId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        }
      ],
      "name": "ResponseDisputed",
      "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": "bondToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "bondSize",
              "type": "uint256"
            }
          ],
          "internalType": "struct IRootVerificationModule.RequestParameters",
          "name": "_params",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_disputeId",
          "type": "bytes32"
        }
      ],
      "name": "disputeEscalated",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_requestId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_responseId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_disputer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_proposer",
          "type": "address"
        }
      ],
      "name": "disputeResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "createdAt",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "disputer",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "responseId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "requestId",
              "type": "bytes32"
            },
            {
              "internalType": "enum IOracle.DisputeStatus",
              "name": "status",
              "type": "uint8"
            }
          ],
          "internalType": "struct IOracle.Dispute",
          "name": "_dispute",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "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": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "createdAt",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "disputer",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "responseId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "requestId",
              "type": "bytes32"
            },
            {
              "internalType": "enum IOracle.DisputeStatus",
              "name": "status",
              "type": "uint8"
            }
          ],
          "internalType": "struct IOracle.Dispute",
          "name": "_dispute",
          "type": "tuple"
        }
      ],
      "name": "onDisputeStatusChange",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "0x60a060405234801561001057600080fd5b5060405161179a38038061179a83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516116c26100d86000396000818161012c015281816101950152818161023d015281816102cc0152818161033f015281816103ab015281816105b70152818161067601528181610733015281816109aa01528181610a520152610adb01526116c26000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80634d610a46116100765780637fadb88d1161005b5780637fadb88d146101b957806393f0899a146101cc57806398660c181461020557600080fd5b80634d610a46146101735780637dc0d1d01461019357600080fd5b806334837c29116100a757806334837c29146100eb5780633661346b146100fe57806338013f021461012757600080fd5b80632e76be2a146100c3578063309de607146100d8575b600080fd5b6100d66100d1366004610d0d565b610225565b005b6100d66100e6366004610dab565b6102b4565b6100d66100f9366004610e87565b610327565b61011161010c366004610f1d565b610816565b60405161011e9190610f86565b60405180910390f35b61014e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b610186610181366004610f1d565b6108b0565b60405161011e9190610fa0565b7f000000000000000000000000000000000000000000000000000000000000000061014e565b6100d66101c7366004610f1d565b610992565b60408051808201909152601681527f526f6f74566572696669636174696f6e4d6f64756c65000000000000000000006020820152610111565b61021861021336600461107e565b610a04565b60405161011e9190611132565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610294576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526020819052604090206102ad82848361123c565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610323576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610396576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103a582608001516108b0565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663415a2bc184606001516040518263ffffffff1660e01b815260040161040891815260200190565b600060405180830381865afa158015610425573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261044d91908101906113a5565b9050600060016000856080015181526020019081526020016000205482608001518060200190518101906104819190611445565b14801591506106ec57606083015160808086015160408088015160208901519388015160a089015192517fcab0e418000000000000000000000000000000000000000000000000000000008152600481019490945273ffffffffffffffffffffffffffffffffffffffff918216602485015293811660448401529283166064830152608482015291169063cab0e4189060a401600060405180830381600087803b15801561052e57600080fd5b505af1158015610542573d6000803e3d6000fd5b50505050602084810151608086015160008181526001845260408082205481518087019190915281518082039096018652808201918290527f92b0382f00000000000000000000000000000000000000000000000000000000909152909373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016936392b0382f936105ee939192909160440161145e565b6020604051808303816000875af115801561060d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106319190611445565b60808601516040517fc65ff8f200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c65ff8f2916106b4918590600401918252602082015260400190565b600060405180830381600087803b1580156106ce57600080fd5b505af11580156106e2573d6000803e3d6000fd5b50505050506107a2565b608084015160608501516040517fc65ff8f200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263c65ff8f29261076f92600401918252602082015260400190565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050505b60016000856080015181526020019081526020016000206000905583608001517f9a96d939e838e8499325cdd0ab8ada4766e4783add4060e6e328f6a5113c60718560600151866020015187604001518860a00151604051610807949392919061149c565b60405180910390a25050505050565b6000602081905290815260409020805461082f9061119b565b80601f016020809104026020016040519081016040528092919081815260200182805461085b9061119b565b80156108a85780601f1061087d576101008083540402835291602001916108a8565b820191906000526020600020905b81548152906001019060200180831161088b57829003601f168201915b505050505081565b6040805160c081018252606080825260208201819052600092820183905281018290526080810182905260a0810191909152600082815260208190526040902080546108fb9061119b565b80601f01602080910402602001604051908101604052809291908181526020018280546109279061119b565b80156109745780601f1061094957610100808354040283529160200191610974565b820191906000526020600020905b81548152906001019060200180831161095757829003601f168201915b505050505080602001905181019061098c9190611564565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a01576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b610a3a6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610aa9576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f415a2bc1000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063415a2bc190602401600060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b5f91908101906113a5565b90506000610b6c876108b0565b90506000816040015173ffffffffffffffffffffffffffffffffffffffff16638130a020836000015184602001516040518363ffffffff1660e01b8152600401610bb7929190611635565b6020604051808303816000875af1158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190611445565b600089815260016020908152604082208390556080860151805193945091928492610c2b9291810182019101611445565b141590506040518060c001604052804281526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018a815260200182610c90576004610c93565b60035b6005811115610ca457610ca46110c8565b9052604080518a815273ffffffffffffffffffffffffffffffffffffffff8a8116602083015289168183015290519196508a917f10d26bcb7d6ba7d73ccfb97211024d458d277dce4abe8206bc5346aa4e55cd1e9181900360600190a250505050949350505050565b600080600060408486031215610d2257600080fd5b83359250602084013567ffffffffffffffff80821115610d4157600080fd5b818601915086601f830112610d5557600080fd5b813581811115610d6457600080fd5b876020828501011115610d7657600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff81168114610a0157600080fd5b60008060408385031215610dbe57600080fd5b823591506020830135610dd081610d89565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610e2d57610e2d610ddb565b60405290565b60405160a0810167ffffffffffffffff81118282101715610e2d57610e2d610ddb565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e7f57610e7f610ddb565b604052919050565b60008082840360e0811215610e9b57600080fd5b8335925060c0601f1982011215610eb157600080fd5b50610eba610e0a565b602084013581526040840135610ecf81610d89565b60208201526060840135610ee281610d89565b6040820152608084810135606083015260a08501359082015260c084013560068110610f0d57600080fd5b60a0820152919491935090915050565b600060208284031215610f2f57600080fd5b5035919050565b60005b83811015610f51578181015183820152602001610f39565b50506000910152565b60008151808452610f72816020860160208601610f36565b601f01601f19169290920160200192915050565b602081526000610f996020830184610f5a565b9392505050565b60006020808352835160c082850152610fbc60e0850182610f5a565b85830151858203601f19016040870152805180835290840192506000918401905b80831015610ffd5783518252928401926001929092019190840190610fdd565b50604087015173ffffffffffffffffffffffffffffffffffffffff811660608801529350606087015173ffffffffffffffffffffffffffffffffffffffff811660808801529350608087015173ffffffffffffffffffffffffffffffffffffffff811660a0880152935060a087015160c08701528094505050505092915050565b6000806000806080858703121561109457600080fd5b843593506020850135925060408501356110ad81610d89565b915060608501356110bd81610d89565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6006811061112e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600060c08201905082518252602083015173ffffffffffffffffffffffffffffffffffffffff80821660208501528060408601511660408501525050606083015160608301526080830151608083015260a083015161119460a08401826110f7565b5092915050565b600181811c908216806111af57607f821691505b6020821081036111e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156102af57600081815260208120601f850160051c810160208610156112155750805b601f850160051c820191505b8181101561123457828155600101611221565b505050505050565b67ffffffffffffffff83111561125457611254610ddb565b61126883611262835461119b565b836111ee565b6000601f8411600181146112ba57600085156112845750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611332565b600083815260209020601f19861690835b828110156112eb57868501358255602094850194600190920191016112cb565b5086821015611326577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600082601f83011261134a57600080fd5b815167ffffffffffffffff81111561136457611364610ddb565b6113776020601f19601f84011601610e56565b81815284602083860101111561138c57600080fd5b61139d826020830160208701610f36565b949350505050565b6000602082840312156113b757600080fd5b815167ffffffffffffffff808211156113cf57600080fd5b9083019060a082860312156113e357600080fd5b6113eb610e33565b8251815260208301516113fd81610d89565b80602083015250604083015160408201526060830151606082015260808301518281111561142a57600080fd5b61143687828601611339565b60808301525095945050505050565b60006020828403121561145757600080fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006114936060830184610f5a565b95945050505050565b84815273ffffffffffffffffffffffffffffffffffffffff8481166020830152831660408201526080810161149360608301846110f7565b600082601f8301126114e557600080fd5b8151602067ffffffffffffffff82111561150157611501610ddb565b8160051b611510828201610e56565b928352848101820192828101908785111561152a57600080fd5b83870192505b8483101561154957825182529183019190830190611530565b979650505050505050565b805161155f81610d89565b919050565b60006020828403121561157657600080fd5b815167ffffffffffffffff8082111561158e57600080fd5b9083019060c082860312156115a257600080fd5b6115aa610e0a565b8251828111156115b957600080fd5b6115c587828601611339565b8252506020830151828111156115da57600080fd5b6115e6878286016114d4565b6020830152506115f860408401611554565b604082015261160960608401611554565b606082015261161a60808401611554565b608082015260a083015160a082015280935050505092915050565b6040815260006116486040830185610f5a565b82810360208481019190915284518083528582019282019060005b8181101561167f57845183529383019391830191600101611663565b509097965050505050505056fea2646970667358221220e756bc076696f525429514be1352d861f7ce9bec768aec8ad701163a6e4b898764736f6c63430008130033",
    "sourceMap": "468:2961:44:-:0;;;730:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;353:16:0;;;468:2961:44;;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;:::-;468:2961:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c80634d610a46116100765780637fadb88d1161005b5780637fadb88d146101b957806393f0899a146101cc57806398660c181461020557600080fd5b80634d610a46146101735780637dc0d1d01461019357600080fd5b806334837c29116100a757806334837c29146100eb5780633661346b146100fe57806338013f021461012757600080fd5b80632e76be2a146100c3578063309de607146100d8575b600080fd5b6100d66100d1366004610d0d565b610225565b005b6100d66100e6366004610dab565b6102b4565b6100d66100f9366004610e87565b610327565b61011161010c366004610f1d565b610816565b60405161011e9190610f86565b60405180910390f35b61014e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b610186610181366004610f1d565b6108b0565b60405161011e9190610fa0565b7f000000000000000000000000000000000000000000000000000000000000000061014e565b6100d66101c7366004610f1d565b610992565b60408051808201909152601681527f526f6f74566572696669636174696f6e4d6f64756c65000000000000000000006020820152610111565b61021861021336600461107e565b610a04565b60405161011e9190611132565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610294576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526020819052604090206102ad82848361123c565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610323576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610396576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103a582608001516108b0565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663415a2bc184606001516040518263ffffffff1660e01b815260040161040891815260200190565b600060405180830381865afa158015610425573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261044d91908101906113a5565b9050600060016000856080015181526020019081526020016000205482608001518060200190518101906104819190611445565b14801591506106ec57606083015160808086015160408088015160208901519388015160a089015192517fcab0e418000000000000000000000000000000000000000000000000000000008152600481019490945273ffffffffffffffffffffffffffffffffffffffff918216602485015293811660448401529283166064830152608482015291169063cab0e4189060a401600060405180830381600087803b15801561052e57600080fd5b505af1158015610542573d6000803e3d6000fd5b50505050602084810151608086015160008181526001845260408082205481518087019190915281518082039096018652808201918290527f92b0382f00000000000000000000000000000000000000000000000000000000909152909373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016936392b0382f936105ee939192909160440161145e565b6020604051808303816000875af115801561060d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106319190611445565b60808601516040517fc65ff8f200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c65ff8f2916106b4918590600401918252602082015260400190565b600060405180830381600087803b1580156106ce57600080fd5b505af11580156106e2573d6000803e3d6000fd5b50505050506107a2565b608084015160608501516040517fc65ff8f200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263c65ff8f29261076f92600401918252602082015260400190565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050505b60016000856080015181526020019081526020016000206000905583608001517f9a96d939e838e8499325cdd0ab8ada4766e4783add4060e6e328f6a5113c60718560600151866020015187604001518860a00151604051610807949392919061149c565b60405180910390a25050505050565b6000602081905290815260409020805461082f9061119b565b80601f016020809104026020016040519081016040528092919081815260200182805461085b9061119b565b80156108a85780601f1061087d576101008083540402835291602001916108a8565b820191906000526020600020905b81548152906001019060200180831161088b57829003601f168201915b505050505081565b6040805160c081018252606080825260208201819052600092820183905281018290526080810182905260a0810191909152600082815260208190526040902080546108fb9061119b565b80601f01602080910402602001604051908101604052809291908181526020018280546109279061119b565b80156109745780601f1061094957610100808354040283529160200191610974565b820191906000526020600020905b81548152906001019060200180831161095757829003601f168201915b505050505080602001905181019061098c9190611564565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a01576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b610a3a6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610aa9576040517fbb44f97c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f415a2bc1000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063415a2bc190602401600060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b5f91908101906113a5565b90506000610b6c876108b0565b90506000816040015173ffffffffffffffffffffffffffffffffffffffff16638130a020836000015184602001516040518363ffffffff1660e01b8152600401610bb7929190611635565b6020604051808303816000875af1158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190611445565b600089815260016020908152604082208390556080860151805193945091928492610c2b9291810182019101611445565b141590506040518060c001604052804281526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018a815260200182610c90576004610c93565b60035b6005811115610ca457610ca46110c8565b9052604080518a815273ffffffffffffffffffffffffffffffffffffffff8a8116602083015289168183015290519196508a917f10d26bcb7d6ba7d73ccfb97211024d458d277dce4abe8206bc5346aa4e55cd1e9181900360600190a250505050949350505050565b600080600060408486031215610d2257600080fd5b83359250602084013567ffffffffffffffff80821115610d4157600080fd5b818601915086601f830112610d5557600080fd5b813581811115610d6457600080fd5b876020828501011115610d7657600080fd5b6020830194508093505050509250925092565b73ffffffffffffffffffffffffffffffffffffffff81168114610a0157600080fd5b60008060408385031215610dbe57600080fd5b823591506020830135610dd081610d89565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610e2d57610e2d610ddb565b60405290565b60405160a0810167ffffffffffffffff81118282101715610e2d57610e2d610ddb565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e7f57610e7f610ddb565b604052919050565b60008082840360e0811215610e9b57600080fd5b8335925060c0601f1982011215610eb157600080fd5b50610eba610e0a565b602084013581526040840135610ecf81610d89565b60208201526060840135610ee281610d89565b6040820152608084810135606083015260a08501359082015260c084013560068110610f0d57600080fd5b60a0820152919491935090915050565b600060208284031215610f2f57600080fd5b5035919050565b60005b83811015610f51578181015183820152602001610f39565b50506000910152565b60008151808452610f72816020860160208601610f36565b601f01601f19169290920160200192915050565b602081526000610f996020830184610f5a565b9392505050565b60006020808352835160c082850152610fbc60e0850182610f5a565b85830151858203601f19016040870152805180835290840192506000918401905b80831015610ffd5783518252928401926001929092019190840190610fdd565b50604087015173ffffffffffffffffffffffffffffffffffffffff811660608801529350606087015173ffffffffffffffffffffffffffffffffffffffff811660808801529350608087015173ffffffffffffffffffffffffffffffffffffffff811660a0880152935060a087015160c08701528094505050505092915050565b6000806000806080858703121561109457600080fd5b843593506020850135925060408501356110ad81610d89565b915060608501356110bd81610d89565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6006811061112e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600060c08201905082518252602083015173ffffffffffffffffffffffffffffffffffffffff80821660208501528060408601511660408501525050606083015160608301526080830151608083015260a083015161119460a08401826110f7565b5092915050565b600181811c908216806111af57607f821691505b6020821081036111e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156102af57600081815260208120601f850160051c810160208610156112155750805b601f850160051c820191505b8181101561123457828155600101611221565b505050505050565b67ffffffffffffffff83111561125457611254610ddb565b61126883611262835461119b565b836111ee565b6000601f8411600181146112ba57600085156112845750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611332565b600083815260209020601f19861690835b828110156112eb57868501358255602094850194600190920191016112cb565b5086821015611326577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600082601f83011261134a57600080fd5b815167ffffffffffffffff81111561136457611364610ddb565b6113776020601f19601f84011601610e56565b81815284602083860101111561138c57600080fd5b61139d826020830160208701610f36565b949350505050565b6000602082840312156113b757600080fd5b815167ffffffffffffffff808211156113cf57600080fd5b9083019060a082860312156113e357600080fd5b6113eb610e33565b8251815260208301516113fd81610d89565b80602083015250604083015160408201526060830151606082015260808301518281111561142a57600080fd5b61143687828601611339565b60808301525095945050505050565b60006020828403121561145757600080fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006114936060830184610f5a565b95945050505050565b84815273ffffffffffffffffffffffffffffffffffffffff8481166020830152831660408201526080810161149360608301846110f7565b600082601f8301126114e557600080fd5b8151602067ffffffffffffffff82111561150157611501610ddb565b8160051b611510828201610e56565b928352848101820192828101908785111561152a57600080fd5b83870192505b8483101561154957825182529183019190830190611530565b979650505050505050565b805161155f81610d89565b919050565b60006020828403121561157657600080fd5b815167ffffffffffffffff8082111561158e57600080fd5b9083019060c082860312156115a257600080fd5b6115aa610e0a565b8251828111156115b957600080fd5b6115c587828601611339565b8252506020830151828111156115da57600080fd5b6115e6878286016114d4565b6020830152506115f860408401611554565b604082015261160960608401611554565b606082015261161a60808401611554565b608082015260a083015160a082015280935050505092915050565b6040815260006116486040830185610f5a565b82810360208481019190915284518083528582019282019060005b8181101561167f57845183529383019391830191600101611663565b509097965050505050505056fea2646970667358221220e756bc076696f525429514be1352d861f7ce9bec768aec8ad701163a6e4b898764736f6c63430008130033",
    "sourceMap": "468:2961:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:175:0;;;;;;:::i;:::-;;:::i;:::-;;900:95;;;;;;:::i;:::-;;:::i;1306:1172:44:-;;;;;;:::i;:::-;;:::i;237:68:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;201:31;;;;;;;;4577:42:113;4565:55;;;4547:74;;4535:2;4520:18;201:31:0;4385:242:113;967:179:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;571:94:0:-;653:6;571:94;;1192:68:44;;;;;;:::i;:::-;;:::i;807:114::-;885:31;;;;;;;;;;;;;;;;;807:114;;2524:903;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;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;695:175:::0;;;:::o;900:95::-;472:10;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;900:95;;:::o;1306:1172:44:-;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;1405:32:44::1;1440:37;1458:8;:18;;;1440:17;:37::i;:::-;1405:72;;1484:33;1520:6;:18;;;1539:8;:19;;;1520:39;;;;;;;;;;;;;11084:25:113::0;;11072:2;11057:18;;10938:177;1520:39:44::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;1520:39:44::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;1484:75;;1566:9;1623:13;:33;1637:8;:18;;;1623:33;;;;;;;;;;;;1589:9;:18;;;1578:41;;;;;;;;;;;;:::i;:::-;:78;::::0;::::1;::::0;-1:-1:-1;1663:542:44::1;;1681:27;::::0;::::1;::::0;1735:18:::1;::::0;;::::1;::::0;1771:17:::1;::::0;;::::1;::::0;1809::::1;::::0;::::1;::::0;1844;;::::1;::::0;1880:16:::1;::::0;::::1;::::0;1681:224;;;;;::::1;::::0;::::1;13057:25:113::0;;;;1681:31:44::1;13179:15:113::0;;;13159:18;;;13152:43;13231:15;;;13211:18;;;13204:43;13283:15;;;13263:18;;;13256:43;13315:19;;;13308:35;1681:31:44;::::1;::::0;::::1;::::0;13029:19:113;;1681:224:44::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;1973:17:44::1;::::0;;::::1;::::0;1992:18:::1;::::0;::::1;::::0;1913:26:::1;2023:33:::0;;;:13:::1;:33:::0;;;;;;;2012:45;;;;::::1;11084:25:113::0;;;;2012:45:44;;;;;;;;;;11057:18:113;;;2012:45:44;;;;1950:108;;;;1913:26;;1950:22:::1;:6;:22;::::0;::::1;::::0;:108:::1;::::0;1973:17;;1992:18;;1950:108;;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2082:18;::::0;::::1;::::0;2066:55:::1;::::0;;;;1913:145;;-1:-1:-1;2066:15:44::1;:6;:15;::::0;::::1;::::0;:55:::1;::::0;1913:145;;2066:55:::1;;13941:25:113::0;;;13997:2;13982:18;;13975:34;13929:2;13914:18;;13767:248;2066:55:44::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1673:455;1663:542;;;2158:18;::::0;::::1;::::0;2178:19:::1;::::0;::::1;::::0;2142:56:::1;::::0;;;;:15:::1;:6;:15;::::0;::::1;::::0;:56:::1;::::0;::::1;;13941:25:113::0;;;13997:2;13982:18;;13975:34;13929:2;13914:18;;13767:248;2142:56:44::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1663:542;2218:13;:33;2232:8;:18;;;2218:33;;;;;;;;;;;2211:40;;;2304:8;:18;;;2263:210;2343:8;:19;;;2381:8;:17;;;2417:8;:17;;;2451:8;:15;;;2263:210;;;;;;;;;:::i;:::-;;;;;;;;1399:1079;;;1306:1172:::0;;:::o;237:68:0:-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;967:179:44:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:11:44;:23;;;;;;;;;;1085:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1075:66;967:179;-1:-1:-1;;967:179:44:o;1192:68::-;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;1192:68:44;:::o;2524:903::-;2677:31;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2677:31:44;472:10:0;:29;494:6;472:29;;468:61;;510:19;;;;;;;;;;;;;;468:61;2752:31:44::1;::::0;;;;::::1;::::0;::::1;11084:25:113::0;;;2716:33:44::1;::::0;2752:6:::1;:18;;::::0;::::1;::::0;11057::113;;2752:31:44::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;2752:31:44::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;2716:67;;2789:32;2824:29;2842:10;2824:17;:29::i;:::-;2789:64;;2860:20;2883:7;:20;;;:34;;;2918:7;:16;;;2936:7;:22;;;2883:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2965:25;::::0;;;:13:::1;:25;::::0;;;;;;:40;;;3035:18:::1;::::0;::::1;::::0;3024:41;;2860:99;;-1:-1:-1;2965:25:44;;2860:99;;3024:41:::1;::::0;;;;;;;::::1;;:::i;:::-;:57;;3012:69;;3099:248;;;;;;;;3325:15;3099:248;;;;3133:9;3099:248;;;;;;3191:9;3099:248;;;;;;3162:11;3099:248;;;;3219:10;3099:248;;;;3245:4;:61;;3280:26;3245:61;;;3252:25;3245:61;3099:248;;;;;;;;:::i;:::-;::::0;;3359:63:::1;::::0;;17518:25:113;;;17562:42;17640:15;;;17635:2;17620:18;;17613:43;17692:15;;17672:18;;;17665:43;3359:63:44;;3088:259;;-1:-1:-1;3376:10:44;;3359:63:::1;::::0;;;;17506:2:113;3359:63:44;;::::1;2710:717;;;;2524:903:::0;;;;;;:::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;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:184::-;1209:77;1206:1;1199:88;1306:4;1303:1;1296:15;1330:4;1327:1;1320:15;1346:253;1418:2;1412:9;1460:4;1448:17;;1495:18;1480:34;;1516:22;;;1477:62;1474:88;;;1542:18;;:::i;:::-;1578:2;1571:22;1346:253;:::o;1604:::-;1676:2;1670:9;1718:4;1706:17;;1753:18;1738:34;;1774:22;;;1735:62;1732:88;;;1800:18;;:::i;1862:334::-;1933:2;1927:9;1989:2;1979:13;;-1:-1:-1;;1975:86:113;1963:99;;2092:18;2077:34;;2113:22;;;2074:62;2071:88;;;2139:18;;:::i;:::-;2175:2;2168:22;1862:334;;-1:-1:-1;1862:334:113:o;2201:1042::-;2294:6;2302;2346:9;2337:7;2333:23;2376:3;2372:2;2368:12;2365:32;;;2393:1;2390;2383:12;2365:32;2429:9;2416:23;2406:33;;2532:4;-1:-1:-1;;2459:2:113;2455:75;2451:86;2448:106;;;2550:1;2547;2540:12;2448:106;;2576:22;;:::i;:::-;2649:2;2638:9;2634:18;2621:32;2614:5;2607:47;2706:2;2695:9;2691:18;2678:32;2719:33;2744:7;2719:33;:::i;:::-;2779:2;2768:14;;2761:31;2844:2;2829:18;;2816:32;2857:33;2816:32;2857:33;:::i;:::-;2917:2;2906:14;;2899:31;2990:3;2975:19;;;2962:33;2957:2;2946:14;;2939:57;3057:3;3042:19;;3029:33;3012:15;;;3005:58;3115:4;3100:20;;3087:34;3152:1;3140:14;;3130:42;;3168:1;3165;3158:12;3130:42;3199:3;3188:15;;3181:32;2201:1042;;3192:5;;-1:-1:-1;2201:1042:113;;-1:-1:-1;;2201:1042:113:o;3248:180::-;3307:6;3360:2;3348:9;3339:7;3335:23;3331:32;3328:52;;;3376:1;3373;3366:12;3328:52;-1:-1:-1;3399:23:113;;3248:180;-1:-1:-1;3248:180:113:o;3433:250::-;3518:1;3528:113;3542:6;3539:1;3536:13;3528:113;;;3618:11;;;3612:18;3599:11;;;3592:39;3564:2;3557:10;3528:113;;;-1:-1:-1;;3675:1:113;3657:16;;3650:27;3433:250::o;3688:329::-;3729:3;3767:5;3761:12;3794:6;3789:3;3782:19;3810:76;3879:6;3872:4;3867:3;3863:14;3856:4;3849:5;3845:16;3810:76;:::i;:::-;3931:2;3919:15;-1:-1:-1;;3915:88:113;3906:98;;;;4006:4;3902:109;;3688:329;-1:-1:-1;;3688:329:113:o;4022:217::-;4169:2;4158:9;4151:21;4132:4;4189:44;4229:2;4218:9;4214:18;4206:6;4189:44;:::i;:::-;4181:52;4022:217;-1:-1:-1;;;4022:217:113:o;4632:1408::-;4796:4;4825:2;4854;4843:9;4836:21;4892:6;4886:13;4935:4;4930:2;4919:9;4915:18;4908:32;4963:51;5009:3;4998:9;4994:19;4980:12;4963:51;:::i;:::-;5051:15;;;5045:22;5107;;;-1:-1:-1;;5103:95:113;5098:2;5083:18;;5076:123;5248:21;;5278:22;;;5354:23;;;;-1:-1:-1;5395:1:113;;5316:15;;;5405:169;5419:6;5416:1;5413:13;5405:169;;;5480:13;;5468:26;;5549:15;;;;5441:1;5434:9;;;;;5514:12;;;;5405:169;;;-1:-1:-1;5623:2:113;5611:15;;5605:22;4330:42;4319:54;;5695:2;5680:18;;4307:67;5605:22;-1:-1:-1;5748:2:113;5736:15;;5730:22;4330:42;4319:54;;5820:3;5805:19;;4307:67;5730:22;-1:-1:-1;5874:3:113;5862:16;;5856:23;4330:42;4319:54;;5947:3;5932:19;;4307:67;5856:23;-1:-1:-1;6008:3:113;6000:6;5996:16;5990:23;5983:4;5972:9;5968:20;5961:53;6031:3;6023:11;;;;;;4632:1408;;;;:::o;6500:525::-;6586:6;6594;6602;6610;6663:3;6651:9;6642:7;6638:23;6634:33;6631:53;;;6680:1;6677;6670:12;6631:53;6716:9;6703:23;6693:33;;6773:2;6762:9;6758:18;6745:32;6735:42;;6827:2;6816:9;6812:18;6799:32;6840:31;6865:5;6840:31;:::i;:::-;6890:5;-1:-1:-1;6947:2:113;6932:18;;6919:32;6960:33;6919:32;6960:33;:::i;:::-;6500:525;;;;-1:-1:-1;6500:525:113;;-1:-1:-1;;6500:525:113:o;7030:184::-;7082:77;7079:1;7072:88;7179:4;7176:1;7169:15;7203:4;7200:1;7193:15;7219:298;7304:1;7297:5;7294:12;7284:200;;7340:77;7337:1;7330:88;7441:4;7438:1;7431:15;7469:4;7466:1;7459:15;7284:200;7493:18;;7219:298::o;7522:738::-;7664:4;7706:3;7695:9;7691:19;7683:27;;7743:6;7737:13;7726:9;7719:32;7798:4;7790:6;7786:17;7780:24;7823:42;7921:2;7907:12;7903:21;7896:4;7885:9;7881:20;7874:51;7993:2;7985:4;7977:6;7973:17;7967:24;7963:33;7956:4;7945:9;7941:20;7934:63;;;8053:4;8045:6;8041:17;8035:24;8028:4;8017:9;8013:20;8006:54;8116:4;8108:6;8104:17;8098:24;8091:4;8080:9;8076:20;8069:54;8172:4;8164:6;8160:17;8154:24;8187:67;8248:4;8237:9;8233:20;8217:14;8187:67;:::i;:::-;;7522:738;;;;:::o;8265:437::-;8344:1;8340:12;;;;8387;;;8408:61;;8462:4;8454:6;8450:17;8440:27;;8408:61;8515:2;8507:6;8504:14;8484:18;8481:38;8478:218;;8552:77;8549:1;8542:88;8653:4;8650:1;8643:15;8681:4;8678:1;8671:15;8478:218;;8265:437;;;:::o;8832:544::-;8933:2;8928:3;8925:11;8922:448;;;8969:1;8994:5;8990:2;8983:17;9039:4;9035:2;9025:19;9109:2;9097:10;9093:19;9090:1;9086:27;9080:4;9076:38;9145:4;9133:10;9130:20;9127:47;;;-1:-1:-1;9168:4:113;9127:47;9223:2;9218:3;9214:12;9211:1;9207:20;9201:4;9197:31;9187:41;;9278:82;9296:2;9289:5;9286:13;9278:82;;;9341:17;;;9322:1;9311:13;9278:82;;;9282:3;;;8832:544;;;:::o;9612:1321::-;9734:18;9729:3;9726:27;9723:53;;;9756:18;;:::i;:::-;9785:93;9874:3;9834:38;9866:4;9860:11;9834:38;:::i;:::-;9828:4;9785:93;:::i;:::-;9904:1;9929:2;9924:3;9921:11;9946:1;9941:734;;;;10719:1;10736:3;10733:93;;;-1:-1:-1;10792:19:113;;;10779:33;10733:93;9518:66;9509:1;9505:11;;;9501:84;9497:89;9487:100;9593:1;9589:11;;;9484:117;10839:78;;9914:1013;;9941:734;8779:1;8772:14;;;8816:4;8803:18;;-1:-1:-1;;9977:76:113;;;10136:9;10158:229;10172:7;10169:1;10166:14;10158:229;;;10261:19;;;10248:33;10233:49;;10368:4;10353:20;;;;10321:1;10309:14;;;;10188:12;10158:229;;;10162:3;10415;10406:7;10403:16;10400:219;;;10535:66;10529:3;10523;10520:1;10516:11;10512:21;10508:94;10504:99;10491:9;10486:3;10482:19;10469:33;10465:139;10457:6;10450:155;10400:219;;;10662:1;10656:3;10653:1;10649:11;10645:19;10639:4;10632:33;9914:1013;;;9612:1321;;;:::o;11120:568::-;11173:5;11226:3;11219:4;11211:6;11207:17;11203:27;11193:55;;11244:1;11241;11234:12;11193:55;11273:6;11267:13;11299:18;11295:2;11292:26;11289:52;;;11321:18;;:::i;:::-;11365:114;11473:4;-1:-1:-1;;11397:4:113;11393:2;11389:13;11385:86;11381:97;11365:114;:::i;:::-;11504:2;11495:7;11488:19;11550:3;11543:4;11538:2;11530:6;11526:15;11522:26;11519:35;11516:55;;;11567:1;11564;11557:12;11516:55;11580:77;11654:2;11647:4;11638:7;11634:18;11627:4;11619:6;11615:17;11580:77;:::i;:::-;11675:7;11120:568;-1:-1:-1;;;;11120:568:113:o;11693:896::-;11789:6;11842:2;11830:9;11821:7;11817:23;11813:32;11810:52;;;11858:1;11855;11848:12;11810:52;11891:9;11885:16;11920:18;11961:2;11953:6;11950:14;11947:34;;;11977:1;11974;11967:12;11947:34;12000:22;;;;12056:4;12038:16;;;12034:27;12031:47;;;12074:1;12071;12064:12;12031:47;12100:22;;:::i;:::-;12151:2;12145:9;12138:5;12131:24;12193:2;12189;12185:11;12179:18;12206:33;12231:7;12206:33;:::i;:::-;12271:7;12266:2;12259:5;12255:14;12248:31;;12325:2;12321;12317:11;12311:18;12306:2;12299:5;12295:14;12288:42;12376:2;12372;12368:11;12362:18;12357:2;12350:5;12346:14;12339:42;12420:3;12416:2;12412:12;12406:19;12450:2;12440:8;12437:16;12434:36;;;12466:1;12463;12456:12;12434:36;12503:55;12550:7;12539:8;12535:2;12531:17;12503:55;:::i;:::-;12497:3;12486:15;;12479:80;-1:-1:-1;12490:5:113;11693:896;-1:-1:-1;;;;;11693:896:113:o;12594:184::-;12664:6;12717:2;12705:9;12696:7;12692:23;12688:32;12685:52;;;12733:1;12730;12723:12;12685:52;-1:-1:-1;12756:16:113;;12594:184;-1:-1:-1;12594:184:113:o;13354:408::-;13569:42;13561:6;13557:55;13546:9;13539:74;13649:6;13644:2;13633:9;13629:18;13622:34;13692:2;13687;13676:9;13672:18;13665:30;13520:4;13712:44;13752:2;13741:9;13737:18;13729:6;13712:44;:::i;:::-;13704:52;13354:408;-1:-1:-1;;;;;13354:408:113:o;14020:509::-;14267:25;;;14311:42;14389:15;;;14384:2;14369:18;;14362:43;14441:15;;14436:2;14421:18;;14414:43;14254:3;14239:19;;14466:57;14519:2;14504:18;;14496:6;14466:57;:::i;14534:709::-;14599:5;14652:3;14645:4;14637:6;14633:17;14629:27;14619:55;;14670:1;14667;14660:12;14619:55;14699:6;14693:13;14725:4;14748:18;14744:2;14741:26;14738:52;;;14770:18;;:::i;:::-;14816:2;14813:1;14809:10;14839:28;14863:2;14859;14855:11;14839:28;:::i;:::-;14901:15;;;14971;;;14967:24;;;14932:12;;;;15003:15;;;15000:35;;;15031:1;15028;15021:12;15000:35;15067:2;15059:6;15055:15;15044:26;;15079:135;15095:6;15090:3;15087:15;15079:135;;;15161:10;;15149:23;;15112:12;;;;15192;;;;15079:135;;;15232:5;14534:709;-1:-1:-1;;;;;;;14534:709:113:o;15248:153::-;15342:13;;15364:31;15342:13;15364:31;:::i;:::-;15248:153;;;:::o;15406:1140::-;15512:6;15565:2;15553:9;15544:7;15540:23;15536:32;15533:52;;;15581:1;15578;15571:12;15533:52;15614:9;15608:16;15643:18;15684:2;15676:6;15673:14;15670:34;;;15700:1;15697;15690:12;15670:34;15723:22;;;;15779:4;15761:16;;;15757:27;15754:47;;;15797:1;15794;15787:12;15754:47;15823:22;;:::i;:::-;15876:2;15870:9;15904:2;15894:8;15891:16;15888:36;;;15920:1;15917;15910:12;15888:36;15947:55;15994:7;15983:8;15979:2;15975:17;15947:55;:::i;:::-;15940:5;15933:70;;16042:2;16038;16034:11;16028:18;16071:2;16061:8;16058:16;16055:36;;;16087:1;16084;16077:12;16055:36;16123:67;16182:7;16171:8;16167:2;16163:17;16123:67;:::i;:::-;16118:2;16111:5;16107:14;16100:91;;16223:57;16276:2;16272;16268:11;16223:57;:::i;:::-;16218:2;16211:5;16207:14;16200:81;16313:57;16366:2;16362;16358:11;16313:57;:::i;:::-;16308:2;16301:5;16297:14;16290:81;16404:58;16457:3;16453:2;16449:12;16404:58;:::i;:::-;16398:3;16391:5;16387:15;16380:83;16510:3;16506:2;16502:12;16496:19;16490:3;16483:5;16479:15;16472:44;16535:5;16525:15;;;;;15406:1140;;;;:::o;16551:760::-;16776:2;16765:9;16758:21;16739:4;16802:44;16842:2;16831:9;16827:18;16819:6;16802:44;:::i;:::-;16903:22;;;16865:2;16883:18;;;16876:50;;;;16975:13;;16997:22;;;17073:15;;;;17035;;;17106:1;17116:169;17130:6;17127:1;17124:13;17116:169;;;17191:13;;17179:26;;17260:15;;;;17225:12;;;;17152:1;17145:9;17116:169;;;-1:-1:-1;17302:3:113;;16551:760;-1:-1:-1;;;;;;;16551:760:113:o",
    "linkReferences": {},
    "immutableReferences": {
      "10": [
        {
          "start": 300,
          "length": 32
        },
        {
          "start": 405,
          "length": 32
        },
        {
          "start": 573,
          "length": 32
        },
        {
          "start": 716,
          "length": 32
        },
        {
          "start": 831,
          "length": 32
        },
        {
          "start": 939,
          "length": 32
        },
        {
          "start": 1463,
          "length": 32
        },
        {
          "start": 1654,
          "length": 32
        },
        {
          "start": 1843,
          "length": 32
        },
        {
          "start": 2474,
          "length": 32
        },
        {
          "start": 2642,
          "length": 32
        },
        {
          "start": 2779,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "ORACLE()": "38013f02",
    "decodeRequestData(bytes32)": "4d610a46",
    "disputeEscalated(bytes32)": "7fadb88d",
    "disputeResponse(bytes32,bytes32,address,address)": "98660c18",
    "finalizeRequest(bytes32,address)": "309de607",
    "moduleName()": "93f0899a",
    "onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))": "34837c29",
    "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\":\"bytes32\",\"name\":\"_responseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOracle.DisputeStatus\",\"name\":\"_status\",\"type\":\"uint8\"}],\"name\":\"DisputeStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_finalizer\",\"type\":\"address\"}],\"name\":\"RequestFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_responseId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"}],\"name\":\"ResponseDisputed\",\"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\":\"bondToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bondSize\",\"type\":\"uint256\"}],\"internalType\":\"struct IRootVerificationModule.RequestParameters\",\"name\":\"_params\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_disputeId\",\"type\":\"bytes32\"}],\"name\":\"disputeEscalated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_requestId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_responseId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"}],\"name\":\"disputeResponse\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"responseId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IOracle.DisputeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IOracle.Dispute\",\"name\":\"_dispute\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"responseId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IOracle.DisputeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IOracle.Dispute\",\"name\":\"_dispute\",\"type\":\"tuple\"}],\"name\":\"onDisputeStatusChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"DisputeStatusChanged(bytes32,bytes32,address,address,uint8)\":{\"params\":{\"_disputer\":\"The address of the disputed\",\"_proposer\":\"The address of the proposer\",\"_requestId\":\"The id of the request\",\"_responseId\":\"The id of the response\",\"_status\":\"The new status of the dispute\"}},\"RequestFinalized(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request that was finalized\"}},\"ResponseDisputed(bytes32,bytes32,address,address)\":{\"params\":{\"_disputer\":\"The address of the disputed\",\"_proposer\":\"The address of the proposer\",\"_requestId\":\"The id of the request created\",\"_responseId\":\"The id of the response disputed\"}}},\"kind\":\"dev\",\"methods\":{\"decodeRequestData(bytes32)\":{\"params\":{\"_requestId\":\"The ID of the request\"},\"returns\":{\"_params\":\"The struct containing the parameters for the request\"}},\"disputeEscalated(bytes32)\":{\"details\":\"This function is present to comply with the module interface but it is not implemented since this is a pre-dispute module.\"},\"disputeResponse(bytes32,bytes32,address,address)\":{\"details\":\"Since this is a pre-dispute module, the dispute status is updated after checking if the disputed response is indeed wrong, since it is calculated on dispute.\",\"params\":{\"_disputer\":\"The user who is disputing the response\",\"_proposer\":\"The proposer of the response being disputed\",\"_requestId\":\"The id of the request from which the response is being disputed\",\"_responseId\":\"The id of the response being disputed\"},\"returns\":{\"_dispute\":\"The dispute of the current response with the updated status\"}},\"finalizeRequest(bytes32,address)\":{\"params\":{\"_finalizer\":\"The address that initiated the finalization\",\"_requestId\":\"The ID of the request being finalized\"}},\"moduleName()\":{\"returns\":{\"_moduleName\":\"The name of the module.\"}},\"onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))\":{\"details\":\"The correct root is retrieved from storage and compared to the proposed root. If the dispute is won, the disputer is paid. In both cases, the request is finalized.\",\"params\":{\"_dispute\":\"The dispute of the current response\"}},\"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\":{\"DisputeStatusChanged(bytes32,bytes32,address,address,uint8)\":{\"notice\":\"Emitted when a dispute status is updated\"},\"RequestFinalized(bytes32,address)\":{\"notice\":\"Emitted when a request is finalized\"},\"ResponseDisputed(bytes32,bytes32,address,address)\":{\"notice\":\"Emitted when a response is disputed\"}},\"kind\":\"user\",\"methods\":{\"decodeRequestData(bytes32)\":{\"notice\":\"Returns the decoded data for a request\"},\"disputeResponse(bytes32,bytes32,address,address)\":{\"notice\":\"Calculates the correct root and compares it to the proposed one.\"},\"finalizeRequest(bytes32,address)\":{\"notice\":\"Finalizes a given request and executes any additional logic set by the chosen modules\"},\"moduleName()\":{\"notice\":\"Returns the name of the module.\"},\"onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))\":{\"notice\":\"Updates the status of the dispute and resolves it by proposing the correct root as a response and finalizing the request.\"},\"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/dispute/RootVerificationModule.sol\":\"RootVerificationModule\"},\"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/libraries/MerkleLib.sol\":{\"keccak256\":\"0xed4a220b5b637b6acedf357e638c2d7581f23a83e0c34e9bfa8020689bec713a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://1226b36c8e04d47f295f9e7ab586576e6c78a353095a1ea45ea5c25226d70dcd\",\"dweb:/ipfs/QmdtJd61h9aEfiKiE3asaLeGGs7ie8JdMkiGCJaGFbuUBD\"]},\"solidity/contracts/modules/dispute/RootVerificationModule.sol\":{\"keccak256\":\"0x890f0eb28eb2e2907a263db42ed2209dfbee0d892d14005c0d556bce601b63ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2c3b7fb20cee3e329aa5aa39ef58e4d1a3a97f1eeacdd49d02007cd38de45eb\",\"dweb:/ipfs/QmVQLn6JyEWu1LHt9GuXh5ryPAKkXyeWH3LxHd1ng9gDiv\"]},\"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/dispute/IRootVerificationModule.sol\":{\"keccak256\":\"0x5c8d3c5dc59e3a11edcc6d0dea21343f8af58b8578b10eb4ba6435a0f098528d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6d1305ec2a0e4b7bc6d2dee4a411a5a6436b5fd182aefcdcf36be898ba35c92\",\"dweb:/ipfs/QmdfRFXDpE8GxpJVVc5oHynyaYbvw3aTLyeBkYPtDaZsBa\"]}},\"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": "bytes32",
              "name": "_responseId",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "_disputer",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "_proposer",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "enum IOracle.DisputeStatus",
              "name": "_status",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "DisputeStatusChanged",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "_finalizer",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "RequestFinalized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "_responseId",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "_disputer",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "_proposer",
              "type": "address",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "ResponseDisputed",
          "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 IRootVerificationModule.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": "bondToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "bondSize",
                  "type": "uint256"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_disputeId",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "disputeEscalated"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "_requestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "_responseId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "_disputer",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_proposer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "disputeResponse",
          "outputs": [
            {
              "internalType": "struct IOracle.Dispute",
              "name": "_dispute",
              "type": "tuple",
              "components": [
                {
                  "internalType": "uint256",
                  "name": "createdAt",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "disputer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "responseId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "requestId",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum IOracle.DisputeStatus",
                  "name": "status",
                  "type": "uint8"
                }
              ]
            }
          ]
        },
        {
          "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": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            },
            {
              "internalType": "struct IOracle.Dispute",
              "name": "_dispute",
              "type": "tuple",
              "components": [
                {
                  "internalType": "uint256",
                  "name": "createdAt",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "disputer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "responseId",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "requestId",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum IOracle.DisputeStatus",
                  "name": "status",
                  "type": "uint8"
                }
              ]
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "onDisputeStatusChange"
        },
        {
          "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"
            }
          },
          "disputeEscalated(bytes32)": {
            "details": "This function is present to comply with the module interface but it is not implemented since this is a pre-dispute module."
          },
          "disputeResponse(bytes32,bytes32,address,address)": {
            "details": "Since this is a pre-dispute module, the dispute status is updated after checking if the disputed response is indeed wrong, since it is calculated on dispute.",
            "params": {
              "_disputer": "The user who is disputing the response",
              "_proposer": "The proposer of the response being disputed",
              "_requestId": "The id of the request from which the response is being disputed",
              "_responseId": "The id of the response being disputed"
            },
            "returns": {
              "_dispute": "The dispute of the current response with the updated status"
            }
          },
          "finalizeRequest(bytes32,address)": {
            "params": {
              "_finalizer": "The address that initiated the finalization",
              "_requestId": "The ID of the request being finalized"
            }
          },
          "moduleName()": {
            "returns": {
              "_moduleName": "The name of the module."
            }
          },
          "onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))": {
            "details": "The correct root is retrieved from storage and compared to the proposed root. If the dispute is won, the disputer is paid. In both cases, the request is finalized.",
            "params": {
              "_dispute": "The dispute of the current response"
            }
          },
          "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"
          },
          "disputeResponse(bytes32,bytes32,address,address)": {
            "notice": "Calculates the correct root and compares it to the proposed one."
          },
          "finalizeRequest(bytes32,address)": {
            "notice": "Finalizes a given request and executes any additional logic set by the chosen modules"
          },
          "moduleName()": {
            "notice": "Returns the name of the module."
          },
          "onDisputeStatusChange(bytes32,(uint256,address,address,bytes32,bytes32,uint8))": {
            "notice": "Updates the status of the dispute and resolves it by proposing the correct root as a response and finalizing the request."
          },
          "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/dispute/RootVerificationModule.sol": "RootVerificationModule"
      },
      "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/libraries/MerkleLib.sol": {
        "keccak256": "0xed4a220b5b637b6acedf357e638c2d7581f23a83e0c34e9bfa8020689bec713a",
        "urls": [
          "bzz-raw://1226b36c8e04d47f295f9e7ab586576e6c78a353095a1ea45ea5c25226d70dcd",
          "dweb:/ipfs/QmdtJd61h9aEfiKiE3asaLeGGs7ie8JdMkiGCJaGFbuUBD"
        ],
        "license": "MIT OR Apache-2.0"
      },
      "solidity/contracts/modules/dispute/RootVerificationModule.sol": {
        "keccak256": "0x890f0eb28eb2e2907a263db42ed2209dfbee0d892d14005c0d556bce601b63ec",
        "urls": [
          "bzz-raw://d2c3b7fb20cee3e329aa5aa39ef58e4d1a3a97f1eeacdd49d02007cd38de45eb",
          "dweb:/ipfs/QmVQLn6JyEWu1LHt9GuXh5ryPAKkXyeWH3LxHd1ng9gDiv"
        ],
        "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/dispute/IRootVerificationModule.sol": {
        "keccak256": "0x5c8d3c5dc59e3a11edcc6d0dea21343f8af58b8578b10eb4ba6435a0f098528d",
        "urls": [
          "bzz-raw://d6d1305ec2a0e4b7bc6d2dee4a411a5a6436b5fd182aefcdcf36be898ba35c92",
          "dweb:/ipfs/QmdfRFXDpE8GxpJVVc5oHynyaYbvw3aTLyeBkYPtDaZsBa"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/contracts/modules/dispute/RootVerificationModule.sol",
    "id": 37756,
    "exportedSymbols": {
      "IModule": [
        1782
      ],
      "IOracle": [
        2282
      ],
      "IRootVerificationModule": [
        43202
      ],
      "MerkleLib": [
        36001
      ],
      "Module": [
        98
      ],
      "RootVerificationModule": [
        37755
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:3398:44",
    "nodes": [
      {
        "id": 37470,
        "nodeType": "PragmaDirective",
        "src": "32:24:44",
        "nodes": [],
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 37473,
        "nodeType": "ImportDirective",
        "src": "104:102:44",
        "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": 37756,
        "sourceUnit": 99,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37471,
              "name": "Module",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 98,
              "src": "112:6:44",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 37472,
              "name": "IModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 1782,
              "src": "120:7:44",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37475,
        "nodeType": "ImportDirective",
        "src": "207:96:44",
        "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": 37756,
        "sourceUnit": 2283,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37474,
              "name": "IOracle",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 2282,
              "src": "215:7:44",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37477,
        "nodeType": "ImportDirective",
        "src": "305:104:44",
        "nodes": [],
        "absolutePath": "solidity/interfaces/modules/dispute/IRootVerificationModule.sol",
        "file": "../../../interfaces/modules/dispute/IRootVerificationModule.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 37756,
        "sourceUnit": 43203,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37476,
              "name": "IRootVerificationModule",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 43202,
              "src": "313:23:44",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37479,
        "nodeType": "ImportDirective",
        "src": "410:56:44",
        "nodes": [],
        "absolutePath": "solidity/contracts/libraries/MerkleLib.sol",
        "file": "../../libraries/MerkleLib.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 37756,
        "sourceUnit": 36002,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37478,
              "name": "MerkleLib",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 36001,
              "src": "418:9:44",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37755,
        "nodeType": "ContractDefinition",
        "src": "468:2961:44",
        "nodes": [
          {
            "id": 37487,
            "nodeType": "UsingForDirective",
            "src": "539:35:44",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 37484,
              "name": "MerkleLib",
              "nameLocations": [
                "545:9:44"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 36001,
              "src": "545:9:44"
            },
            "typeName": {
              "id": 37486,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 37485,
                "name": "MerkleLib.Tree",
                "nameLocations": [
                  "559:9:44",
                  "569:4:44"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 35882,
                "src": "559:14:44"
              },
              "referencedDeclaration": 35882,
              "src": "559:14:44",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Tree_$35882_storage_ptr",
                "typeString": "struct MerkleLib.Tree"
              }
            }
          },
          {
            "id": 37492,
            "nodeType": "VariableDeclaration",
            "src": "651:74:44",
            "nodes": [],
            "constant": false,
            "documentation": {
              "id": 37488,
              "nodeType": "StructuredDocumentation",
              "src": "578:70:44",
              "text": " @notice The calculated correct root for a given request"
            },
            "mutability": "mutable",
            "name": "_correctRoots",
            "nameLocation": "712:13:44",
            "scope": 37755,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
              "typeString": "mapping(bytes32 => bytes32)"
            },
            "typeName": {
              "id": 37491,
              "keyName": "_requestId",
              "keyNameLocation": "667:10:44",
              "keyType": {
                "id": 37489,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "659:7:44",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "651:51:44",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                "typeString": "mapping(bytes32 => bytes32)"
              },
              "valueName": "_correctRoot",
              "valueNameLocation": "689:12:44",
              "valueType": {
                "id": 37490,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "681:7:44",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "id": 37502,
            "nodeType": "FunctionDefinition",
            "src": "730:47:44",
            "nodes": [],
            "body": {
              "id": 37501,
              "nodeType": "Block",
              "src": "775:2:44",
              "nodes": [],
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 37498,
                    "name": "_oracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 37495,
                    "src": "766:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  }
                ],
                "id": 37499,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 37497,
                  "name": "Module",
                  "nameLocations": [
                    "759:6:44"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 98,
                  "src": "759:6:44"
                },
                "nodeType": "ModifierInvocation",
                "src": "759:15:44"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 37496,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37495,
                  "mutability": "mutable",
                  "name": "_oracle",
                  "nameLocation": "750:7:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37502,
                  "src": "742:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracle_$2282",
                    "typeString": "contract IOracle"
                  },
                  "typeName": {
                    "id": 37494,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 37493,
                      "name": "IOracle",
                      "nameLocations": [
                        "742:7:44"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2282,
                      "src": "742:7:44"
                    },
                    "referencedDeclaration": 2282,
                    "src": "742:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracle_$2282",
                      "typeString": "contract IOracle"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "741:17:44"
            },
            "returnParameters": {
              "id": 37500,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "775:0:44"
            },
            "scope": 37755,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37511,
            "nodeType": "FunctionDefinition",
            "src": "807:114:44",
            "nodes": [],
            "body": {
              "id": 37510,
              "nodeType": "Block",
              "src": "879:42:44",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "hexValue": "526f6f74566572696669636174696f6e4d6f64756c65",
                    "id": 37508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "892:24:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_151d8cf56511e02e16335097d00879df555e41acf642862413f31079004c3f3e",
                      "typeString": "literal_string \"RootVerificationModule\""
                    },
                    "value": "RootVerificationModule"
                  },
                  "functionReturnParameters": 37507,
                  "id": 37509,
                  "nodeType": "Return",
                  "src": "885:31:44"
                }
              ]
            },
            "baseFunctions": [
              1781
            ],
            "documentation": {
              "id": 37503,
              "nodeType": "StructuredDocumentation",
              "src": "781:23:44",
              "text": "@inheritdoc IModule"
            },
            "functionSelector": "93f0899a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "moduleName",
            "nameLocation": "816:10:44",
            "parameters": {
              "id": 37504,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "826:2:44"
            },
            "returnParameters": {
              "id": 37507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37506,
                  "mutability": "mutable",
                  "name": "_moduleName",
                  "nameLocation": "866:11:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37511,
                  "src": "852:25:44",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 37505,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "852:6:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "851:27:44"
            },
            "scope": 37755,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 37532,
            "nodeType": "FunctionDefinition",
            "src": "967:179:44",
            "nodes": [],
            "body": {
              "id": 37531,
              "nodeType": "Block",
              "src": "1069:77:44",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 37529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 37520,
                      "name": "_params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37518,
                      "src": "1075:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                        "typeString": "struct IRootVerificationModule.RequestParameters memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "id": 37523,
                            "name": "requestData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14,
                            "src": "1096:11:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 37525,
                          "indexExpression": {
                            "id": 37524,
                            "name": "_requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37514,
                            "src": "1108:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1096:23:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 37526,
                              "name": "RequestParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 43162,
                              "src": "1122:17:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43162_storage_ptr_$",
                                "typeString": "type(struct IRootVerificationModule.RequestParameters storage pointer)"
                              }
                            }
                          ],
                          "id": 37527,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1121:19:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43162_storage_ptr_$",
                            "typeString": "type(struct IRootVerificationModule.RequestParameters storage pointer)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          },
                          {
                            "typeIdentifier": "t_type$_t_struct$_RequestParameters_$43162_storage_ptr_$",
                            "typeString": "type(struct IRootVerificationModule.RequestParameters storage pointer)"
                          }
                        ],
                        "expression": {
                          "id": 37521,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "1085:3:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 37522,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1089:6:44",
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "1085:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 37528,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1085:56:44",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                        "typeString": "struct IRootVerificationModule.RequestParameters memory"
                      }
                    },
                    "src": "1075:66:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                      "typeString": "struct IRootVerificationModule.RequestParameters memory"
                    }
                  },
                  "id": 37530,
                  "nodeType": "ExpressionStatement",
                  "src": "1075:66:44"
                }
              ]
            },
            "baseFunctions": [
              43171
            ],
            "documentation": {
              "id": 37512,
              "nodeType": "StructuredDocumentation",
              "src": "925:39:44",
              "text": "@inheritdoc IRootVerificationModule"
            },
            "functionSelector": "4d610a46",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decodeRequestData",
            "nameLocation": "976:17:44",
            "parameters": {
              "id": 37515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37514,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "1002:10:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37532,
                  "src": "994:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37513,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "994:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "993:20:44"
            },
            "returnParameters": {
              "id": 37519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37518,
                  "mutability": "mutable",
                  "name": "_params",
                  "nameLocation": "1060:7:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37532,
                  "src": "1035:32:44",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                    "typeString": "struct IRootVerificationModule.RequestParameters"
                  },
                  "typeName": {
                    "id": 37517,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 37516,
                      "name": "RequestParameters",
                      "nameLocations": [
                        "1035:17:44"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 43162,
                      "src": "1035:17:44"
                    },
                    "referencedDeclaration": 43162,
                    "src": "1035:17:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43162_storage_ptr",
                      "typeString": "struct IRootVerificationModule.RequestParameters"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1034:34:44"
            },
            "scope": 37755,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37541,
            "nodeType": "FunctionDefinition",
            "src": "1192:68:44",
            "nodes": [],
            "body": {
              "id": 37540,
              "nodeType": "Block",
              "src": "1258:2:44",
              "nodes": [],
              "statements": []
            },
            "baseFunctions": [
              43201
            ],
            "documentation": {
              "id": 37533,
              "nodeType": "StructuredDocumentation",
              "src": "1150:39:44",
              "text": "@inheritdoc IRootVerificationModule"
            },
            "functionSelector": "7fadb88d",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 37538,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 37537,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "1247:10:44"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "1247:10:44"
                },
                "nodeType": "ModifierInvocation",
                "src": "1247:10:44"
              }
            ],
            "name": "disputeEscalated",
            "nameLocation": "1201:16:44",
            "parameters": {
              "id": 37536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37535,
                  "mutability": "mutable",
                  "name": "_disputeId",
                  "nameLocation": "1226:10:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37541,
                  "src": "1218:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37534,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1218:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1217:20:44"
            },
            "returnParameters": {
              "id": 37539,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1258:0:44"
            },
            "scope": 37755,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 37662,
            "nodeType": "FunctionDefinition",
            "src": "1306:1172:44",
            "nodes": [],
            "body": {
              "id": 37661,
              "nodeType": "Block",
              "src": "1399:1079:44",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    37554
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37554,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "1430:7:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 37661,
                      "src": "1405:32:44",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                        "typeString": "struct IRootVerificationModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 37553,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 37552,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "1405:17:44"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43162,
                          "src": "1405:17:44"
                        },
                        "referencedDeclaration": 43162,
                        "src": "1405:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43162_storage_ptr",
                          "typeString": "struct IRootVerificationModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37559,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 37556,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37547,
                          "src": "1458:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 37557,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1467:9:44",
                        "memberName": "requestId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2041,
                        "src": "1458:18:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 37555,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37532,
                      "src": "1440:17:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43162_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct IRootVerificationModule.RequestParameters memory)"
                      }
                    },
                    "id": 37558,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1440:37:44",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                      "typeString": "struct IRootVerificationModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1405:72:44"
                },
                {
                  "assignments": [
                    37564
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37564,
                      "mutability": "mutable",
                      "name": "_response",
                      "nameLocation": "1508:9:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 37661,
                      "src": "1484:33:44",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                        "typeString": "struct IOracle.Response"
                      },
                      "typeName": {
                        "id": 37563,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 37562,
                          "name": "IOracle.Response",
                          "nameLocations": [
                            "1484:7:44",
                            "1492:8:44"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 2031,
                          "src": "1484:16:44"
                        },
                        "referencedDeclaration": 2031,
                        "src": "1484:16:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Response_$2031_storage_ptr",
                          "typeString": "struct IOracle.Response"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37570,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 37567,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37547,
                          "src": "1539:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 37568,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1548:10:44",
                        "memberName": "responseId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2039,
                        "src": "1539:19:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37565,
                        "name": "ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "1520:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracle_$2282",
                          "typeString": "contract IOracle"
                        }
                      },
                      "id": 37566,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1527:11:44",
                      "memberName": "getResponse",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2118,
                      "src": "1520:18:44",
                      "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": 37569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1520:39:44",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                      "typeString": "struct IOracle.Response memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1484:75:44"
                },
                {
                  "assignments": [
                    37572
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37572,
                      "mutability": "mutable",
                      "name": "_won",
                      "nameLocation": "1571:4:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 37661,
                      "src": "1566:9:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 37571,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1566:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37586,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 37585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 37575,
                            "name": "_response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37564,
                            "src": "1589:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                              "typeString": "struct IOracle.Response memory"
                            }
                          },
                          "id": 37576,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1599:8:44",
                          "memberName": "response",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2030,
                          "src": "1589:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 37578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1610:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 37577,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1610:7:44",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "id": 37579,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1609:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          }
                        ],
                        "expression": {
                          "id": 37573,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "1578:3:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 37574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1582:6:44",
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "1578:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 37580,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1578:41:44",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "baseExpression": {
                        "id": 37581,
                        "name": "_correctRoots",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37492,
                        "src": "1623:13:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                          "typeString": "mapping(bytes32 => bytes32)"
                        }
                      },
                      "id": 37584,
                      "indexExpression": {
                        "expression": {
                          "id": 37582,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37547,
                          "src": "1637:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 37583,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1646:9:44",
                        "memberName": "requestId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2041,
                        "src": "1637:18:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1623:33:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1578:78:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1566:90:44"
                },
                {
                  "condition": {
                    "id": 37587,
                    "name": "_won",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 37572,
                    "src": "1667:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 37640,
                    "nodeType": "Block",
                    "src": "2134:71:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 37634,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37547,
                                "src": "2158:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 37635,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2167:9:44",
                              "memberName": "requestId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2041,
                              "src": "2158:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 37636,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37547,
                                "src": "2178:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 37637,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2187:10:44",
                              "memberName": "responseId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2039,
                              "src": "2178:19:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 37631,
                              "name": "ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "2142:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IOracle_$2282",
                                "typeString": "contract IOracle"
                              }
                            },
                            "id": 37633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2149:8:44",
                            "memberName": "finalize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2275,
                            "src": "2142:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32) external"
                            }
                          },
                          "id": 37638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2142:56:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37639,
                        "nodeType": "ExpressionStatement",
                        "src": "2142:56:44"
                      }
                    ]
                  },
                  "id": 37641,
                  "nodeType": "IfStatement",
                  "src": "1663:542:44",
                  "trueBody": {
                    "id": 37630,
                    "nodeType": "Block",
                    "src": "1673:455:44",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 37593,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37547,
                                "src": "1735:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 37594,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1744:9:44",
                              "memberName": "requestId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2041,
                              "src": "1735:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 37595,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37547,
                                "src": "1771:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 37596,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1780:8:44",
                              "memberName": "proposer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2037,
                              "src": "1771:17:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 37597,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37547,
                                "src": "1809:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 37598,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1818:8:44",
                              "memberName": "disputer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2035,
                              "src": "1809:17:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 37599,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37554,
                                "src": "1844:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                                  "typeString": "struct IRootVerificationModule.RequestParameters memory"
                                }
                              },
                              "id": 37600,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1852:9:44",
                              "memberName": "bondToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43159,
                              "src": "1844:17:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2822",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "expression": {
                                "id": 37601,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37554,
                                "src": "1880:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                                  "typeString": "struct IRootVerificationModule.RequestParameters memory"
                                }
                              },
                              "id": 37602,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1888:8:44",
                              "memberName": "bondSize",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43161,
                              "src": "1880:16:44",
                              "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": 37588,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37554,
                                "src": "1681:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                                  "typeString": "struct IRootVerificationModule.RequestParameters memory"
                                }
                              },
                              "id": 37591,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1689:19:44",
                              "memberName": "accountingExtension",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 43156,
                              "src": "1681:27:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAccountingExtension_$42580",
                                "typeString": "contract IAccountingExtension"
                              }
                            },
                            "id": 37592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1709:3:44",
                            "memberName": "pay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 42517,
                            "src": "1681:31:44",
                            "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": 37603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "1723:10:44",
                            "1763:6:44",
                            "1798:9:44",
                            "1836:6:44",
                            "1871:7:44"
                          ],
                          "names": [
                            "_requestId",
                            "_payer",
                            "_receiver",
                            "_token",
                            "_amount"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "1681:224:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37604,
                        "nodeType": "ExpressionStatement",
                        "src": "1681:224:44"
                      },
                      {
                        "assignments": [
                          37606
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 37606,
                            "mutability": "mutable",
                            "name": "_correctResponseId",
                            "nameLocation": "1921:18:44",
                            "nodeType": "VariableDeclaration",
                            "scope": 37630,
                            "src": "1913:26:44",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 37605,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1913:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 37621,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 37609,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37547,
                                "src": "1973:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 37610,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1982:8:44",
                              "memberName": "disputer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2035,
                              "src": "1973:17:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 37611,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37547,
                                "src": "1992:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 37612,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2001:9:44",
                              "memberName": "requestId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2041,
                              "src": "1992:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "baseExpression": {
                                    "id": 37615,
                                    "name": "_correctRoots",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37492,
                                    "src": "2023:13:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                      "typeString": "mapping(bytes32 => bytes32)"
                                    }
                                  },
                                  "id": 37618,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 37616,
                                      "name": "_dispute",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 37547,
                                      "src": "2037:8:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                        "typeString": "struct IOracle.Dispute memory"
                                      }
                                    },
                                    "id": 37617,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2046:9:44",
                                    "memberName": "requestId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2041,
                                    "src": "2037:18:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2023:33:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 37613,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2012:3:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 37614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2016:6:44",
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "2012:10:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 37619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2012:45:44",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 37607,
                              "name": "ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "1950:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IOracle_$2282",
                                "typeString": "contract IOracle"
                              }
                            },
                            "id": 37608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1957:15:44",
                            "memberName": "proposeResponse",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2184,
                            "src": "1950:22:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (address,bytes32,bytes memory) external returns (bytes32)"
                            }
                          },
                          "id": 37620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1950:108:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1913:145:44"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 37625,
                                "name": "_dispute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37547,
                                "src": "2082:8:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                                  "typeString": "struct IOracle.Dispute memory"
                                }
                              },
                              "id": 37626,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2091:9:44",
                              "memberName": "requestId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2041,
                              "src": "2082:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 37627,
                              "name": "_correctResponseId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 37606,
                              "src": "2102:18:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 37622,
                              "name": "ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "2066:6:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IOracle_$2282",
                                "typeString": "contract IOracle"
                              }
                            },
                            "id": 37624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2073:8:44",
                            "memberName": "finalize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2275,
                            "src": "2066:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32) external"
                            }
                          },
                          "id": 37628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2066:55:44",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 37629,
                        "nodeType": "ExpressionStatement",
                        "src": "2066:55:44"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 37646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "2211:40:44",
                    "subExpression": {
                      "baseExpression": {
                        "id": 37642,
                        "name": "_correctRoots",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37492,
                        "src": "2218:13:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                          "typeString": "mapping(bytes32 => bytes32)"
                        }
                      },
                      "id": 37645,
                      "indexExpression": {
                        "expression": {
                          "id": 37643,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37547,
                          "src": "2232:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 37644,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2241:9:44",
                        "memberName": "requestId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2041,
                        "src": "2232:18:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2218:33:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37647,
                  "nodeType": "ExpressionStatement",
                  "src": "2211:40:44"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 37649,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37547,
                          "src": "2304:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 37650,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2313:9:44",
                        "memberName": "requestId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2041,
                        "src": "2304:18:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 37651,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37547,
                          "src": "2343:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 37652,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2352:10:44",
                        "memberName": "responseId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2039,
                        "src": "2343:19:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 37653,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37547,
                          "src": "2381:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 37654,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2390:8:44",
                        "memberName": "disputer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2035,
                        "src": "2381:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 37655,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37547,
                          "src": "2417:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 37656,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2426:8:44",
                        "memberName": "proposer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2037,
                        "src": "2417:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 37657,
                          "name": "_dispute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37547,
                          "src": "2451:8:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                            "typeString": "struct IOracle.Dispute memory"
                          }
                        },
                        "id": 37658,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2460:6:44",
                        "memberName": "status",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2044,
                        "src": "2451:15:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                          "typeString": "enum IOracle.DisputeStatus"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                          "typeString": "enum IOracle.DisputeStatus"
                        }
                      ],
                      "id": 37648,
                      "name": "DisputeStatusChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2315,
                      "src": "2263:20:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_address_$_t_enum$_DisputeStatus_$2052_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address,address,enum IOracle.DisputeStatus)"
                      }
                    },
                    "id": 37659,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [
                      "2292:10:44",
                      "2330:11:44",
                      "2370:9:44",
                      "2406:9:44",
                      "2442:7:44"
                    ],
                    "names": [
                      "_requestId",
                      "_responseId",
                      "_disputer",
                      "_proposer",
                      "_status"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "2263:210:44",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37660,
                  "nodeType": "EmitStatement",
                  "src": "2258:215:44"
                }
              ]
            },
            "baseFunctions": [
              43195
            ],
            "documentation": {
              "id": 37542,
              "nodeType": "StructuredDocumentation",
              "src": "1264:39:44",
              "text": "@inheritdoc IRootVerificationModule"
            },
            "functionSelector": "34837c29",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 37550,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 37549,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "1388:10:44"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "1388:10:44"
                },
                "nodeType": "ModifierInvocation",
                "src": "1388:10:44"
              }
            ],
            "name": "onDisputeStatusChange",
            "nameLocation": "1315:21:44",
            "parameters": {
              "id": 37548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37544,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 37662,
                  "src": "1337:7:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37543,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1337:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37547,
                  "mutability": "mutable",
                  "name": "_dispute",
                  "nameLocation": "1369:8:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37662,
                  "src": "1346:31:44",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                    "typeString": "struct IOracle.Dispute"
                  },
                  "typeName": {
                    "id": 37546,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 37545,
                      "name": "IOracle.Dispute",
                      "nameLocations": [
                        "1346:7:44",
                        "1354:7:44"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2045,
                      "src": "1346:15:44"
                    },
                    "referencedDeclaration": 2045,
                    "src": "1346:15:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$2045_storage_ptr",
                      "typeString": "struct IOracle.Dispute"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1336:42:44"
            },
            "returnParameters": {
              "id": 37551,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1399:0:44"
            },
            "scope": 37755,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 37754,
            "nodeType": "FunctionDefinition",
            "src": "2524:903:44",
            "nodes": [],
            "body": {
              "id": 37753,
              "nodeType": "Block",
              "src": "2710:717:44",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    37683
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37683,
                      "mutability": "mutable",
                      "name": "_response",
                      "nameLocation": "2740:9:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 37753,
                      "src": "2716:33:44",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                        "typeString": "struct IOracle.Response"
                      },
                      "typeName": {
                        "id": 37682,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 37681,
                          "name": "IOracle.Response",
                          "nameLocations": [
                            "2716:7:44",
                            "2724:8:44"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 2031,
                          "src": "2716:16:44"
                        },
                        "referencedDeclaration": 2031,
                        "src": "2716:16:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Response_$2031_storage_ptr",
                          "typeString": "struct IOracle.Response"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37688,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37686,
                        "name": "_responseId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37667,
                        "src": "2771:11:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 37684,
                        "name": "ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10,
                        "src": "2752:6:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracle_$2282",
                          "typeString": "contract IOracle"
                        }
                      },
                      "id": 37685,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2759:11:44",
                      "memberName": "getResponse",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2118,
                      "src": "2752:18:44",
                      "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": 37687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2752:31:44",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                      "typeString": "struct IOracle.Response memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2716:67:44"
                },
                {
                  "assignments": [
                    37691
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37691,
                      "mutability": "mutable",
                      "name": "_params",
                      "nameLocation": "2814:7:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 37753,
                      "src": "2789:32:44",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                        "typeString": "struct IRootVerificationModule.RequestParameters"
                      },
                      "typeName": {
                        "id": 37690,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 37689,
                          "name": "RequestParameters",
                          "nameLocations": [
                            "2789:17:44"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 43162,
                          "src": "2789:17:44"
                        },
                        "referencedDeclaration": 43162,
                        "src": "2789:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestParameters_$43162_storage_ptr",
                          "typeString": "struct IRootVerificationModule.RequestParameters"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37695,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 37693,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37665,
                        "src": "2842:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 37692,
                      "name": "decodeRequestData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37532,
                      "src": "2824:17:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_RequestParameters_$43162_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct IRootVerificationModule.RequestParameters memory)"
                      }
                    },
                    "id": 37694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2824:29:44",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                      "typeString": "struct IRootVerificationModule.RequestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2789:64:44"
                },
                {
                  "assignments": [
                    37697
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37697,
                      "mutability": "mutable",
                      "name": "_correctRoot",
                      "nameLocation": "2868:12:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 37753,
                      "src": "2860:20:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 37696,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2860:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37706,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 37701,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37691,
                          "src": "2918:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                            "typeString": "struct IRootVerificationModule.RequestParameters memory"
                          }
                        },
                        "id": 37702,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2926:8:44",
                        "memberName": "treeData",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43147,
                        "src": "2918:16:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 37703,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37691,
                          "src": "2936:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                            "typeString": "struct IRootVerificationModule.RequestParameters memory"
                          }
                        },
                        "id": 37704,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2944:14:44",
                        "memberName": "leavesToInsert",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43150,
                        "src": "2936:22:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 37698,
                          "name": "_params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37691,
                          "src": "2883:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RequestParameters_$43162_memory_ptr",
                            "typeString": "struct IRootVerificationModule.RequestParameters memory"
                          }
                        },
                        "id": 37699,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2891:12:44",
                        "memberName": "treeVerifier",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43153,
                        "src": "2883:20:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ITreeVerifier_$42377",
                          "typeString": "contract ITreeVerifier"
                        }
                      },
                      "id": 37700,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2904:13:44",
                      "memberName": "calculateRoot",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 42376,
                      "src": "2883:34:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory,bytes32[] memory) external returns (bytes32)"
                      }
                    },
                    "id": 37705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2883:76:44",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2860:99:44"
                },
                {
                  "expression": {
                    "id": 37711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 37707,
                        "name": "_correctRoots",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37492,
                        "src": "2965:13:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                          "typeString": "mapping(bytes32 => bytes32)"
                        }
                      },
                      "id": 37709,
                      "indexExpression": {
                        "id": 37708,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37665,
                        "src": "2979:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2965:25:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 37710,
                      "name": "_correctRoot",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37697,
                      "src": "2993:12:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2965:40:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 37712,
                  "nodeType": "ExpressionStatement",
                  "src": "2965:40:44"
                },
                {
                  "assignments": [
                    37714
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37714,
                      "mutability": "mutable",
                      "name": "_won",
                      "nameLocation": "3017:4:44",
                      "nodeType": "VariableDeclaration",
                      "scope": 37753,
                      "src": "3012:9:44",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 37713,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3012:4:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37725,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 37724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 37717,
                            "name": "_response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37683,
                            "src": "3035:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Response_$2031_memory_ptr",
                              "typeString": "struct IOracle.Response memory"
                            }
                          },
                          "id": 37718,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3045:8:44",
                          "memberName": "response",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2030,
                          "src": "3035:18:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "components": [
                            {
                              "id": 37720,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3056:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 37719,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3056:7:44",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "id": 37721,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3055:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          }
                        ],
                        "expression": {
                          "id": 37715,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "3024:3:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 37716,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3028:6:44",
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "3024:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 37722,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3024:41:44",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 37723,
                      "name": "_correctRoot",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37697,
                      "src": "3069:12:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3024:57:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3012:69:44"
                },
                {
                  "expression": {
                    "id": 37744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 37726,
                      "name": "_dispute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37677,
                      "src": "3088:8:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                        "typeString": "struct IOracle.Dispute memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 37729,
                          "name": "_disputer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37669,
                          "src": "3133:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 37730,
                          "name": "_responseId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37667,
                          "src": "3162:11:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "id": 37731,
                          "name": "_proposer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37671,
                          "src": "3191:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 37732,
                          "name": "_requestId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37665,
                          "src": "3219:10:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "condition": {
                            "id": 37733,
                            "name": "_won",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37714,
                            "src": "3245:4:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "expression": {
                              "expression": {
                                "id": 37737,
                                "name": "IOracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2282,
                                "src": "3280:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                  "typeString": "type(contract IOracle)"
                                }
                              },
                              "id": 37738,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3288:13:44",
                              "memberName": "DisputeStatus",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2052,
                              "src": "3280:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                "typeString": "type(enum IOracle.DisputeStatus)"
                              }
                            },
                            "id": 37739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3302:4:44",
                            "memberName": "Lost",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2050,
                            "src": "3280:26:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                              "typeString": "enum IOracle.DisputeStatus"
                            }
                          },
                          "id": 37740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "3245:61:44",
                          "trueExpression": {
                            "expression": {
                              "expression": {
                                "id": 37734,
                                "name": "IOracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2282,
                                "src": "3252:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                                  "typeString": "type(contract IOracle)"
                                }
                              },
                              "id": 37735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3260:13:44",
                              "memberName": "DisputeStatus",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2052,
                              "src": "3252:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_DisputeStatus_$2052_$",
                                "typeString": "type(enum IOracle.DisputeStatus)"
                              }
                            },
                            "id": 37736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3274:3:44",
                            "memberName": "Won",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2049,
                            "src": "3252:25:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                              "typeString": "enum IOracle.DisputeStatus"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                            "typeString": "enum IOracle.DisputeStatus"
                          }
                        },
                        {
                          "expression": {
                            "id": 37741,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "3325:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 37742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3331:9:44",
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "src": "3325:15:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_enum$_DisputeStatus_$2052",
                            "typeString": "enum IOracle.DisputeStatus"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 37727,
                          "name": "IOracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2282,
                          "src": "3099:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IOracle_$2282_$",
                            "typeString": "type(contract IOracle)"
                          }
                        },
                        "id": 37728,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3107:7:44",
                        "memberName": "Dispute",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2045,
                        "src": "3099:15:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Dispute_$2045_storage_ptr_$",
                          "typeString": "type(struct IOracle.Dispute storage pointer)"
                        }
                      },
                      "id": 37743,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [
                        "3123:8:44",
                        "3150:10:44",
                        "3181:8:44",
                        "3208:9:44",
                        "3237:6:44",
                        "3314:9:44"
                      ],
                      "names": [
                        "disputer",
                        "responseId",
                        "proposer",
                        "requestId",
                        "status",
                        "createdAt"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "3099:248:44",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                        "typeString": "struct IOracle.Dispute memory"
                      }
                    },
                    "src": "3088:259:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                      "typeString": "struct IOracle.Dispute memory"
                    }
                  },
                  "id": 37745,
                  "nodeType": "ExpressionStatement",
                  "src": "3088:259:44"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 37747,
                        "name": "_requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37665,
                        "src": "3376:10:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 37748,
                        "name": "_responseId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37667,
                        "src": "3388:11:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 37749,
                        "name": "_disputer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37669,
                        "src": "3401:9:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 37750,
                        "name": "_proposer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37671,
                        "src": "3412:9:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 37746,
                      "name": "ResponseDisputed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2301,
                      "src": "3359:16:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address,address)"
                      }
                    },
                    "id": 37751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3359:63:44",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37752,
                  "nodeType": "EmitStatement",
                  "src": "3354:68:44"
                }
              ]
            },
            "baseFunctions": [
              43186
            ],
            "documentation": {
              "id": 37663,
              "nodeType": "StructuredDocumentation",
              "src": "2482:39:44",
              "text": "@inheritdoc IRootVerificationModule"
            },
            "functionSelector": "98660c18",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 37674,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 37673,
                  "name": "onlyOracle",
                  "nameLocations": [
                    "2657:10:44"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 41,
                  "src": "2657:10:44"
                },
                "nodeType": "ModifierInvocation",
                "src": "2657:10:44"
              }
            ],
            "name": "disputeResponse",
            "nameLocation": "2533:15:44",
            "parameters": {
              "id": 37672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37665,
                  "mutability": "mutable",
                  "name": "_requestId",
                  "nameLocation": "2562:10:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37754,
                  "src": "2554:18:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37664,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2554:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37667,
                  "mutability": "mutable",
                  "name": "_responseId",
                  "nameLocation": "2586:11:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37754,
                  "src": "2578:19:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37666,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2578:7:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37669,
                  "mutability": "mutable",
                  "name": "_disputer",
                  "nameLocation": "2611:9:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37754,
                  "src": "2603:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 37668,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2603:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37671,
                  "mutability": "mutable",
                  "name": "_proposer",
                  "nameLocation": "2634:9:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37754,
                  "src": "2626:17:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 37670,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2626:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2548:99:44"
            },
            "returnParameters": {
              "id": 37678,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37677,
                  "mutability": "mutable",
                  "name": "_dispute",
                  "nameLocation": "2700:8:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 37754,
                  "src": "2677:31:44",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Dispute_$2045_memory_ptr",
                    "typeString": "struct IOracle.Dispute"
                  },
                  "typeName": {
                    "id": 37676,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 37675,
                      "name": "IOracle.Dispute",
                      "nameLocations": [
                        "2677:7:44",
                        "2685:7:44"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2045,
                      "src": "2677:15:44"
                    },
                    "referencedDeclaration": 2045,
                    "src": "2677:15:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Dispute_$2045_storage_ptr",
                      "typeString": "struct IOracle.Dispute"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2676:33:44"
            },
            "scope": 37755,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 37480,
              "name": "Module",
              "nameLocations": [
                "503:6:44"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 98,
              "src": "503:6:44"
            },
            "id": 37481,
            "nodeType": "InheritanceSpecifier",
            "src": "503:6:44"
          },
          {
            "baseName": {
              "id": 37482,
              "name": "IRootVerificationModule",
              "nameLocations": [
                "511:23:44"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 43202,
              "src": "511:23:44"
            },
            "id": 37483,
            "nodeType": "InheritanceSpecifier",
            "src": "511:23:44"
          }
        ],
        "canonicalName": "RootVerificationModule",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          37755,
          43202,
          2346,
          98,
          1782
        ],
        "name": "RootVerificationModule",
        "nameLocation": "477:22:44",
        "scope": 37756,
        "usedErrors": [
          1745
        ]
      }
    ],
    "license": "MIT"
  },
  "id": 44
}