{
  "contractName": "SecretStoreServerKeyRetrievalService",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "requireKeyServer",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "keyServersCount",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxServerKeyRetrievalRequests",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "drain",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "serverKeyRetrievalFee",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "keyServerSetAddressInit",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "ServerKeyRetrievalRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "serverKeyPublic",
          "type": "bytes"
        }
      ],
      "name": "ServerKeyRetrieved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "ServerKeyRetrievalError",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "serverKeyPublic",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "threshold",
          "type": "uint256"
        }
      ],
      "name": "ServerKeyRetrieved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "retrieveServerKey",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "name": "serverKeyPublic",
          "type": "bytes"
        },
        {
          "name": "threshold",
          "type": "uint8"
        }
      ],
      "name": "serverKeyRetrieved",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "serverKeyRetrievalError",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "serverKeyRetrievalRequestsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getServerKeyRetrievalRequest",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "isServerKeyRetrievalResponseRequired",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newFee",
          "type": "uint256"
        }
      ],
      "name": "setServerKeyRetrievalFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newLimit",
          "type": "uint256"
        }
      ],
      "name": "setMaxServerKeyRetrievalRequests",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "deleteServerKeyRetrievalRequest",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405160208061167f833981016040819052905160008054600160a060020a031916331780825591928392600160a060020a031691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360018054600160a060020a031916600160a060020a03929092169190911790555067016345785d8a000060045560086005556115d2806100ad6000396000f3006080604052600436106100e25763ffffffff60e060020a60003504166315eb530981146101585780631b544bb0146101725780632b4f030a146101995780633b68c427146101d057806350f6a134146102085780635aa8404c146102205780636479c4d114610235578063715018a61461024a5780638da5cb5b1461025f5780638f32d59b146102905780639890220b146102a55780639f0d6ffd146102ba578063a45362f6146102d2578063af538b71146102fc578063d2548ea814610311578063e70f142714610329578063f2fde38b14610341578063ffaff0f714610362575b6040805160e560020a62461bcd02815260206004820152602260248201527f446972656374207061796d656e747320617265206e6f7420737570706f72746560448201527f642e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b34801561016457600080fd5b5061017060043561036d565b005b34801561017e57600080fd5b50610187610428565b60408051918252519081900360200190f35b3480156101a557600080fd5b506101ba600160a060020a036004351661042f565b6040805160ff9092168252519081900360200190f35b3480156101dc57600080fd5b506101f4600435600160a060020a03602435166104cc565b604080519115158252519081900360200190f35b34801561021457600080fd5b50610187600435610505565b34801561022c57600080fd5b506101ba61052a565b34801561024157600080fd5b506101876105ba565b34801561025657600080fd5b506101706105c0565b34801561026b57600080fd5b5061027461062a565b60408051600160a060020a039092168252519081900360200190f35b34801561029c57600080fd5b506101f4610639565b3480156102b157600080fd5b5061017061064a565b3480156102c657600080fd5b506101706004356106f0565b3480156102de57600080fd5b5061017060048035906024803590810191013560ff60443516610708565b34801561030857600080fd5b50610187610914565b34801561031d57600080fd5b5061017060043561091a565b34801561033557600080fd5b50610170600435610932565b34801561034d57600080fd5b50610170600160a060020a036004351661098f565b6101706004356109ae565b600081815260066020526040812080549091906060908290829060ff16151561039557610420565b61039e3361042f565b6040805181815260608101825291955060208201610800803883390190505092506103cc85858560ff610b76565b909250905060018260028111156103df57fe5b14156103ea57610420565b6103f48686610e11565b60405186907fd771fa1d962d6d67f55ba82bcac8601cf0bd33cc5680a029b58faa3d2d3d260d90600090a25b505050505050565b6007545b90565b600154604080517f287fb40c000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163287fb40c9160248082019260209290919082900301818787803b15801561049a57600080fd5b505af11580156104ae573d6000803e3d6000fd5b505050506040513d60208110156104c457600080fd5b505192915050565b60008060006104da8461042f565b600086815260066020526040902090925090506104fa6001820183610ec4565b92505b505092915050565b60008060078381548110151561051757fe5b6000918252602090912001549392505050565b600154604080517f5560c9650000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691635560c96591600480830192602092919082900301818787803b15801561058957600080fd5b505af115801561059d573d6000803e3d6000fd5b505050506040513d60208110156105b357600080fd5b5051905090565b60055481565b6105c8610639565b15156105d357600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b600054600160a060020a0316331490565b336000908152600260205260409020548015156106b1576040805160e560020a62461bcd02815260206004820152600d60248201527f42616c616e636520697320302e00000000000000000000000000000000000000604482015290519081900360640190fd5b336000818152600260205260408082208290555183156108fc0291849190818181858888f193505050501580156106ec573d6000803e3d6000fd5b5050565b6106f8610639565b151561070357600080fd5b600555565b6000806000606086868080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451604014935061079a92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b6000898152600660205260409020805490955060ff1615156107bb57610909565b6107c43361042f565b935061080385858a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437508e9450610b769350505050565b9093509150600183600281111561081657fe5b141561082157610909565b61082b8986610e11565b600083600281111561083957fe5b14156108dd5760408051602080825284518183015284518c937fbc454e03c5f94d0bd23c53b4fed1f5af23e7cd378eac46203f25d406c4a921189387939092839283019185019080838360005b8381101561089e578181015183820152602001610886565b50505050905090810190601f1680156108cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2610909565b60405189907fd771fa1d962d6d67f55ba82bcac8601cf0bd33cc5680a029b58faa3d2d3d260d90600090a25b505050505050505050565b60045481565b610922610639565b151561092d57600080fd5b600455565b600061093c610639565b151561094757600080fd5b5060008181526006602052604090206109608282610e11565b60405182907fd771fa1d962d6d67f55ba82bcac8601cf0bd33cc5680a029b58faa3d2d3d260d90600090a25050565b610997610639565b15156109a257600080fd5b6109ab81610f73565b50565b6000600454803410151515610a0d576040805160e560020a62461bcd02815260206004820181905260248201527f5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e604482015290519081900360640190fd5b60055460075410610a8d576040805160e560020a62461bcd028152602060048201526024808201527f4d617869756d756d206e756d626572206f66207265717565737473207265616360448201527f6865642e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000838152600660205260409020805490925060ff1615610af8576040805160e560020a62461bcd02815260206004820152601260248201527f52657175657374206973206163746976652e0000000000000000000000000000604482015290519081900360640190fd5b610b00610ff0565b815460ff1916600190811783556007805491820181556000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018390556040805184815290517fabca19cd1a35cd8001bfc77e38ae9f56a162e022292a67e1152f1512776d68089181900360200190a1505050565b6000606060ff8316828080610ba660018b018a6002610b9361052a565b60ff16811515610b9f57fe5b04876111b2565b92506002836002811115610bb657fe5b1415610bc757828895509550610e04565b87876040516020018083805190602001908083835b60208310610bfb5780518252601f199092019160209182019101610bdc565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101925050506040516020818303038152906040526040518082805190602001908083835b60208310610c8d5780518252601f199092019160209182019101610c6e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150610ccb8a6007018a89856111b2565b90506001836002811115610cdb57fe5b1415610d37578660ff1660ff14158015610d0f57506000828152600a8b016020526040902054600b8b015460ff9081169116145b15610d2b578751610d2990600d8c019060208b019061148c565b505b60018895509550610e04565b6001816002811115610d4557fe5b1415610dfd57600b8a015460ff600189018116911610610dfd57600d8a01805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181526000939290918391830182828015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505050905095509550610e04565b8088955095505b5050505094509492505050565b610e1d81600701611377565b60008281526006602081905260408220805460ff1990811682556001820184815560028301859055600383018054831690556005830180549092169091559092918290610e6c9085018261150a565b50506000600783018181556008840182905560098401805460ff19908116909155600b85018054909116905590610ea6600c85018261150a565b50610eb79050600d83016000611528565b50506106ec6007836113c8565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f1c57600080fd5b505af1158015610f30573d6000803e3d6000fd5b505050506040513d6020811015610f4657600080fd5b505185549092508214610f5c57600192506104fd565b5050506001919091015460ff90911660020a161590565b600160a060020a0381161515610f8857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008060008060008061100161052a565b95503494508560ff168581151561101457fe5b049350600092505b6001860360ff168360ff1610156110f357600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff861660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b15801561109657600080fd5b505af11580156110aa573d6000803e3d6000fd5b505050506040513d60208110156110c057600080fd5b5051600160a060020a0381166000908152600260205260409020805486019055948490039460019390930192915061101c565b600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff6000198a011660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b15801561116057600080fd5b505af1158015611174573d6000803e3d6000fd5b505050506040513d602081101561118a57600080fd5b5051600160a060020a0316600090815260026020526040902080549095019094555050505050565b6000806000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050506040513d602081101561123757600080fd5b505160028a015490945060ff16151561125257838955611264565b88548414611264576112648985611450565b600189015460ff891660020a9350831615611282576001945061136b565b600086815260038a016020526040902080546001808c0180548717905560028c01805460ff8181168401811660ff1992831617909255845493821683019182169316831790935591935014156112ed5760058901805460018101825560009182526020909120018690555b600489015460ff9081169083161061132d5760048901805460ff191660ff84811691909117909155600019830181169088161161132d576000945061136b565b600289015460ff1661133d61052a565b60048b0154919003915060001960ff91821683010181169088161115611366576002945061136b565b600194505b50505050949350505050565b60005b60058201548110156106ec57816003016000836005018381548110151561139d57fe5b600091825260208083209091015483528201929092526040019020805460ff1916905560010161137a565b60005b825481101561144b57825482908490839081106113e457fe5b60009182526020909120015414156114435782548390600019810190811061140857fe5b9060005260206000200154838281548110151561142157fe5b60009182526020909120015582546000190161143d848261156c565b5061144b565b6001016113cb565b505050565b61145982611377565b80825560006001830181905560028301805460ff19908116909155600484018054909116905561144b600584018261156c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114cd57805160ff19168380011785556114fa565b828001600101855582156114fa579182015b828111156114fa5782518255916020019190600101906114df565b5061150692915061158c565b5090565b50805460008255906000526020600020908101906109ab919061158c565b50805460018160011615610100020316600290046000825580601f1061154e57506109ab565b601f0160209004906000526020600020908101906109ab919061158c565b81548183558181111561144b5760008381526020902061144b9181019083015b61042c91905b8082111561150657600081556001016115925600a165627a7a7230582044e69346a7eb5de78969e579d9ecebb5beae70163fbc8d869d421d8e810f7df00029",
  "deployedBytecode": "0x6080604052600436106100e25763ffffffff60e060020a60003504166315eb530981146101585780631b544bb0146101725780632b4f030a146101995780633b68c427146101d057806350f6a134146102085780635aa8404c146102205780636479c4d114610235578063715018a61461024a5780638da5cb5b1461025f5780638f32d59b146102905780639890220b146102a55780639f0d6ffd146102ba578063a45362f6146102d2578063af538b71146102fc578063d2548ea814610311578063e70f142714610329578063f2fde38b14610341578063ffaff0f714610362575b6040805160e560020a62461bcd02815260206004820152602260248201527f446972656374207061796d656e747320617265206e6f7420737570706f72746560448201527f642e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b34801561016457600080fd5b5061017060043561036d565b005b34801561017e57600080fd5b50610187610428565b60408051918252519081900360200190f35b3480156101a557600080fd5b506101ba600160a060020a036004351661042f565b6040805160ff9092168252519081900360200190f35b3480156101dc57600080fd5b506101f4600435600160a060020a03602435166104cc565b604080519115158252519081900360200190f35b34801561021457600080fd5b50610187600435610505565b34801561022c57600080fd5b506101ba61052a565b34801561024157600080fd5b506101876105ba565b34801561025657600080fd5b506101706105c0565b34801561026b57600080fd5b5061027461062a565b60408051600160a060020a039092168252519081900360200190f35b34801561029c57600080fd5b506101f4610639565b3480156102b157600080fd5b5061017061064a565b3480156102c657600080fd5b506101706004356106f0565b3480156102de57600080fd5b5061017060048035906024803590810191013560ff60443516610708565b34801561030857600080fd5b50610187610914565b34801561031d57600080fd5b5061017060043561091a565b34801561033557600080fd5b50610170600435610932565b34801561034d57600080fd5b50610170600160a060020a036004351661098f565b6101706004356109ae565b600081815260066020526040812080549091906060908290829060ff16151561039557610420565b61039e3361042f565b6040805181815260608101825291955060208201610800803883390190505092506103cc85858560ff610b76565b909250905060018260028111156103df57fe5b14156103ea57610420565b6103f48686610e11565b60405186907fd771fa1d962d6d67f55ba82bcac8601cf0bd33cc5680a029b58faa3d2d3d260d90600090a25b505050505050565b6007545b90565b600154604080517f287fb40c000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163287fb40c9160248082019260209290919082900301818787803b15801561049a57600080fd5b505af11580156104ae573d6000803e3d6000fd5b505050506040513d60208110156104c457600080fd5b505192915050565b60008060006104da8461042f565b600086815260066020526040902090925090506104fa6001820183610ec4565b92505b505092915050565b60008060078381548110151561051757fe5b6000918252602090912001549392505050565b600154604080517f5560c9650000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691635560c96591600480830192602092919082900301818787803b15801561058957600080fd5b505af115801561059d573d6000803e3d6000fd5b505050506040513d60208110156105b357600080fd5b5051905090565b60055481565b6105c8610639565b15156105d357600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b600054600160a060020a0316331490565b336000908152600260205260409020548015156106b1576040805160e560020a62461bcd02815260206004820152600d60248201527f42616c616e636520697320302e00000000000000000000000000000000000000604482015290519081900360640190fd5b336000818152600260205260408082208290555183156108fc0291849190818181858888f193505050501580156106ec573d6000803e3d6000fd5b5050565b6106f8610639565b151561070357600080fd5b600555565b6000806000606086868080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451604014935061079a92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b6000898152600660205260409020805490955060ff1615156107bb57610909565b6107c43361042f565b935061080385858a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437508e9450610b769350505050565b9093509150600183600281111561081657fe5b141561082157610909565b61082b8986610e11565b600083600281111561083957fe5b14156108dd5760408051602080825284518183015284518c937fbc454e03c5f94d0bd23c53b4fed1f5af23e7cd378eac46203f25d406c4a921189387939092839283019185019080838360005b8381101561089e578181015183820152602001610886565b50505050905090810190601f1680156108cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2610909565b60405189907fd771fa1d962d6d67f55ba82bcac8601cf0bd33cc5680a029b58faa3d2d3d260d90600090a25b505050505050505050565b60045481565b610922610639565b151561092d57600080fd5b600455565b600061093c610639565b151561094757600080fd5b5060008181526006602052604090206109608282610e11565b60405182907fd771fa1d962d6d67f55ba82bcac8601cf0bd33cc5680a029b58faa3d2d3d260d90600090a25050565b610997610639565b15156109a257600080fd5b6109ab81610f73565b50565b6000600454803410151515610a0d576040805160e560020a62461bcd02815260206004820181905260248201527f5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e604482015290519081900360640190fd5b60055460075410610a8d576040805160e560020a62461bcd028152602060048201526024808201527f4d617869756d756d206e756d626572206f66207265717565737473207265616360448201527f6865642e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000838152600660205260409020805490925060ff1615610af8576040805160e560020a62461bcd02815260206004820152601260248201527f52657175657374206973206163746976652e0000000000000000000000000000604482015290519081900360640190fd5b610b00610ff0565b815460ff1916600190811783556007805491820181556000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018390556040805184815290517fabca19cd1a35cd8001bfc77e38ae9f56a162e022292a67e1152f1512776d68089181900360200190a1505050565b6000606060ff8316828080610ba660018b018a6002610b9361052a565b60ff16811515610b9f57fe5b04876111b2565b92506002836002811115610bb657fe5b1415610bc757828895509550610e04565b87876040516020018083805190602001908083835b60208310610bfb5780518252601f199092019160209182019101610bdc565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101925050506040516020818303038152906040526040518082805190602001908083835b60208310610c8d5780518252601f199092019160209182019101610c6e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150610ccb8a6007018a89856111b2565b90506001836002811115610cdb57fe5b1415610d37578660ff1660ff14158015610d0f57506000828152600a8b016020526040902054600b8b015460ff9081169116145b15610d2b578751610d2990600d8c019060208b019061148c565b505b60018895509550610e04565b6001816002811115610d4557fe5b1415610dfd57600b8a015460ff600189018116911610610dfd57600d8a01805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181526000939290918391830182828015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505050905095509550610e04565b8088955095505b5050505094509492505050565b610e1d81600701611377565b60008281526006602081905260408220805460ff1990811682556001820184815560028301859055600383018054831690556005830180549092169091559092918290610e6c9085018261150a565b50506000600783018181556008840182905560098401805460ff19908116909155600b85018054909116905590610ea6600c85018261150a565b50610eb79050600d83016000611528565b50506106ec6007836113c8565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f1c57600080fd5b505af1158015610f30573d6000803e3d6000fd5b505050506040513d6020811015610f4657600080fd5b505185549092508214610f5c57600192506104fd565b5050506001919091015460ff90911660020a161590565b600160a060020a0381161515610f8857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008060008060008061100161052a565b95503494508560ff168581151561101457fe5b049350600092505b6001860360ff168360ff1610156110f357600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff861660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b15801561109657600080fd5b505af11580156110aa573d6000803e3d6000fd5b505050506040513d60208110156110c057600080fd5b5051600160a060020a0381166000908152600260205260409020805486019055948490039460019390930192915061101c565b600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff6000198a011660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b15801561116057600080fd5b505af1158015611174573d6000803e3d6000fd5b505050506040513d602081101561118a57600080fd5b5051600160a060020a0316600090815260026020526040902080549095019094555050505050565b6000806000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050506040513d602081101561123757600080fd5b505160028a015490945060ff16151561125257838955611264565b88548414611264576112648985611450565b600189015460ff891660020a9350831615611282576001945061136b565b600086815260038a016020526040902080546001808c0180548717905560028c01805460ff8181168401811660ff1992831617909255845493821683019182169316831790935591935014156112ed5760058901805460018101825560009182526020909120018690555b600489015460ff9081169083161061132d5760048901805460ff191660ff84811691909117909155600019830181169088161161132d576000945061136b565b600289015460ff1661133d61052a565b60048b0154919003915060001960ff91821683010181169088161115611366576002945061136b565b600194505b50505050949350505050565b60005b60058201548110156106ec57816003016000836005018381548110151561139d57fe5b600091825260208083209091015483528201929092526040019020805460ff1916905560010161137a565b60005b825481101561144b57825482908490839081106113e457fe5b60009182526020909120015414156114435782548390600019810190811061140857fe5b9060005260206000200154838281548110151561142157fe5b60009182526020909120015582546000190161143d848261156c565b5061144b565b6001016113cb565b505050565b61145982611377565b80825560006001830181905560028301805460ff19908116909155600484018054909116905561144b600584018261156c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114cd57805160ff19168380011785556114fa565b828001600101855582156114fa579182015b828111156114fa5782518255916020019190600101906114df565b5061150692915061158c565b5090565b50805460008255906000526020600020908101906109ab919061158c565b50805460018160011615610100020316600290046000825580601f1061154e57506109ab565b601f0160209004906000526020600020908101906109ab919061158c565b81548183558181111561144b5760008381526020902061144b9181019083015b61042c91905b8082111561150657600081556001016115925600a165627a7a7230582044e69346a7eb5de78969e579d9ecebb5beae70163fbc8d869d421d8e810f7df00029",
  "sourceMap": "888:9631:7:-;;;1642:194;8:9:-1;5:2;;;30:1;27;20:12;5:2;1642:194:7;;;;;;;;;;;;;;;;509:6:12;:19;;-1:-1:-1;;;;;;509:19:12;518:10;509:19;;;;1642:194:7;;;;-1:-1:-1;;;;;572:6:12;;509;539:40;;509:6;;539:40;2548:19:8;:45;;-1:-1:-1;;;;;;2548:45:8;-1:-1:-1;;;;;2548:45:8;;;;;;;;;;-1:-1:-1;1776:10:7;1752:21;:34;1828:1;1796:29;:33;888:9631;;;-1:-1:-1;888:9631:7;;",
  "deployedSourceMap": "888:9631:7:-;;;;;;;;;-1:-1:-1;;;888:9631:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1955:44;;;-1:-1:-1;;;;;1955:44:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4673:1196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4673:1196:7;;;;;;;5935:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5935:136:7;;;;;;;;;;;;;;;;;;;;2843:166:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2843:166:8;-1:-1:-1;;;;;2843:166:8;;;;;;;;;;;;;;;;;;;;;;;;6453:354:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6453:354:7;;;-1:-1:-1;;;;;6453:354:7;;;;;;;;;;;;;;;;;;;;;;;6167:214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6167:214:7;;;;;2644:140:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2644:140:8;;;;10253:44:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10253:44:7;;;;1273:127:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1273:127:12;;;;639:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;639:70:12;;;;;;;;-1:-1:-1;;;;;639:70:12;;;;;;;;;;;;;;926:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;926:83:12;;;;3059:199:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3059:199:8;;;;7079:154:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7079:154:7;;;;;3264:1341;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3264:1341:7;;;;;;;;;;;;;;;;;;;;10065:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10065:36:7;;;;6890:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6890:134:7;;;;;7284:313;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7284:313:7;;;;;1561:101:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1561:101:12;-1:-1:-1;;;;;1561:101:12;;;;;2133:1068:7;;;;;;4673:1196;4787:41;4831:39;;;:26;:39;;;;;4885:16;;4831:39;;4787:41;5307:26;;4787:41;;5307:26;;4885:16;;4884:17;4880:54;;;4917:7;;4880:54;5016:28;5033:10;5016:16;:28::i;:::-;5346:2;5336:13;;;;;;;;;;4993:51;;-1:-1:-1;5336:13:7;;;17:15:-1;;105:10;5336:13:7;88:34:-1;136:17;;-1:-1;5336:13:7;5307:42;;5488:127;5534:7;5555:14;5583:13;5610:4;5488:32;:127::i;:::-;5445:170;;-1:-1:-1;5445:170:7;-1:-1:-1;5648:27:7;5629:15;:46;;;;;;;;;5625:83;;;5691:7;;5625:83;5759:52;5790:11;5803:7;5759:30;:52::i;:::-;5826:36;;5850:11;;5826:36;;;;;4673:1196;;;;;;;:::o;5935:136::-;6027:30;:37;5935:136;;:::o;2843:166:8:-;2946:19;;2933:69;;;;;;-1:-1:-1;;;;;2933:69:8;;;;;;;;;2909:5;;2946:19;;;;;2933:58;;:69;;;;;;;;;;;;;;;2909:5;2946:19;2933:69;;;5:2:-1;;;;30:1;27;20:12;5:2;2933:69:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2933:69:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2933:69:8;;2843:166;-1:-1:-1;;2843:166:8:o;6453:354:7:-;6562:4;6578:20;6638:41;6601:27;6618:9;6601:16;:27::i;:::-;6682:39;;;;:26;:39;;;;;6578:50;;-1:-1:-1;6682:39:7;-1:-1:-1;6738:62:7;6757:26;;;6578:50;6738:18;:62::i;:::-;6731:69;;6453:354;;;;;;;:::o;6167:214::-;6243:7;6262:19;6284:30;6315:5;6284:37;;;;;;;;;;;;;;;;;;;;;6167:214;-1:-1:-1;;;6167:214:7:o;2644:140:8:-;2729:19;;2716:61;;;;;;;;2692:5;;-1:-1:-1;;;;;2729:19:8;;2716:59;;:61;;;;;;;;;;;;;;2692:5;2729:19;2716:61;;;5:2:-1;;;;30:1;27;20:12;5:2;2716:61:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2716:61:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2716:61:8;;-1:-1:-1;2644:140:8;:::o;10253:44:7:-;;;;:::o;1273:127:12:-;824:9;:7;:9::i;:::-;816:18;;;;;;;;1367:1;1351:6;;1330:40;;-1:-1:-1;;;;;1351:6:12;;;;1330:40;;1367:1;;1330:40;1393:1;1376:19;;-1:-1:-1;;1376:19:12;;;1273:127::o;639:70::-;676:7;698:6;-1:-1:-1;;;;;698:6:12;639:70;:::o;926:83::-;965:4;998:6;-1:-1:-1;;;;;998:6:12;984:10;:20;;926:83::o;3059:199:8:-;3120:10;3093:15;3111:20;;;:8;:20;;;;;;3149:12;;;3141:38;;;;;-1:-1:-1;;;;;3141:38:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3198:10;3212:1;3189:20;;;:8;:20;;;;;;:24;;;3223:28;;;;;;3243:7;;3223:28;;3212:1;3223:28;3243:7;3198:10;3223:28;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3223:28:8;3059:199;:::o;7079:154:7:-;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;7186:29:7;:40;7079:154::o;3264:1341::-;3442:41;3745:20;3807:31;3848:33;3374:15;;2332:125:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2388:16:8;;2408:2;2388:22;;-1:-1:-1;2380:59:8;;-1:-1:-1;;;2380:59:8;;;;-1:-1:-1;;;;;2380:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3486:39:7;;;;:26;:39;;;;;3540:16;;3486:39;;-1:-1:-1;3540:16:7;;3539:17;3535:54;;;3572:7;;3535:54;3768:28;3785:10;3768:16;:28::i;:::-;3745:51;;3933:134;3979:7;4000:14;4028:15;;3933:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4057:9:7;;-1:-1:-1;3933:32:7;;-1:-1:-1;;;;3933:134:7:i;:::-;3891:176;;-1:-1:-1;3891:176:7;-1:-1:-1;4153:27:7;4134:15;:46;;;;;;;;;4130:106;;;4219:7;;4130:106;4287:52;4318:11;4331:7;4287:30;:52::i;:::-;4372:25;4353:15;:44;;;;;;;;;4349:250;;;4431:53;;;;;;;;;;;;;;;4450:11;;4431:53;;4463:20;;4431:53;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4431:53:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4349:250;;;4552:36;;4576:11;;4552:36;;;;;4349:250;3264:1341;;;;;;;;;:::o;10065:36::-;;;;:::o;6890:134::-;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;6987:21:7;:30;6890:134::o;7284:313::-;7393:41;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;-1:-1:-1;7437:39:7;;;;:26;:39;;;;;7486:52;7464:11;7437:39;7486:30;:52::i;:::-;7554:36;;7578:11;;7554:36;;;;;7284:313;;:::o;1561:101:12:-;824:9;:7;:9::i;:::-;816:18;;;;;;;;1629:28;1648:8;1629:18;:28::i;:::-;1561:101;:::o;2133:1068:7:-;2429:41;2219:21;;2216:6:8;2203:9;:19;;2195:64;;;;;;;-1:-1:-1;;;;;2195:64:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2348:29:7;;2308:30;:37;:69;2300:118;;;;;-1:-1:-1;;;;;2300:118:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:39;;;;:26;:39;;;;;2531:16;;2473:39;;-1:-1:-1;2531:16:7;;2530:17;2522:48;;;;;-1:-1:-1;;;;;2522:48:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;2580:9;:7;:9::i;:::-;3057:23;;-1:-1:-1;;3057:23:7;3076:4;3057:23;;;;;3090:30;27:10:-1;;23:18;;;45:23;;3057:16:7;3090:48;;;;;;3154:40;;;;;;;;;;;;;3090:48;3154:40;;;2133:1068;;;:::o;7687:1991::-;7884:15;7901:5;7987:18;;;7884:15;;;8058:149;7987:18;8086:26;;8126:14;8174:1;8154:17;:15;:17::i;:::-;:21;;;;;;;;;;8189:17;8058:14;:149::i;:::-;8015:192;-1:-1:-1;8249:26:7;8221:24;:54;;;;;;;;;8217:135;;;8299:24;8325:15;8291:50;;;;;;8217:135;8442:15;8459:9;8425:44;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8425:44:7;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8425:44:7;;;8415:55;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8415:55:7;;;;;;;;;;;;;;;;8396:74;;8514:119;8542:7;:17;;8573:14;8601:9;8624:8;8514:14;:119::i;:::-;8480:153;-1:-1:-1;8675:27:7;8647:24;:55;;;;;;;;;8643:573;;;8852:9;:17;;8865:4;8852:17;;:105;;;;-1:-1:-1;8913:44:7;;;;:34;;;:44;;;;;;8873:36;;;;8913:44;8873:36;;;8913:44;;8873:84;8852:105;8848:192;;;8977:48;;;;:30;;;;:48;;;;;:::i;:::-;;8848:192;9160:27;9189:15;9152:53;;;;;;8643:573;9248:27;9229:15;:46;;;;;;;;;9225:395;;;9456:36;;;;:53;9508:1;9496:13;;9456:53;;:36;;:53;9452:158;;9564:30;;;9529:66;;;;;;;;;;;;;-1:-1:-1;;9529:66:7;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9564:30:7;9529:66;;9564:30;;9529:66;;9564:30;9529:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9452:158;9638:15;9655;9630:41;;;;7687:1991;;;;;;;;;;;;:::o;9735:290::-;9857:33;9872:7;:17;;9857:14;:33::i;:::-;9907:39;;;;:26;:39;;;;;;;9900:46;;-1:-1:-1;;9900:46:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9907:39;;;;;9900:46;;;;9907:39;9900:46;:::i;:::-;-1:-1:-1;;9900:46:7;;;;;;;;;;;;;;;;;;-1:-1:-1;;9900:46:7;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9900:46:7;;-1:-1:-1;9900:46:7;;;;;:::i;:::-;;;9957:61;9974:30;10006:11;9957:16;:61::i;3920:618:8:-;4029:4;4120:31;4402:21;4167:19;;;;;;;;;-1:-1:-1;;;;;4167:19:8;-1:-1:-1;;;;;4154:54:8;;:56;;;;;-1:-1:-1;;;4154:56:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4154:56:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4154:56:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4154:56:8;4251:33;;4154:56;;-1:-1:-1;4224:60:8;;4220:102;;4307:4;4300:11;;;;4220:102;-1:-1:-1;;;4435:1:8;4475:33;;;;;4427:28;;;;;;4475:49;4474:56;;3920:618::o;1796:169:12:-;-1:-1:-1;;;;;1865:22:12;;;;1857:31;;;;;;1920:6;;;1899:38;;-1:-1:-1;;;;;1899:38:12;;;;1920:6;;;1899:38;;;1943:6;:17;;-1:-1:-1;;1943:17:12;-1:-1:-1;;;;;1943:17:12;;;;;;;;;;1796:169::o;3326:521:8:-;3364:11;3405:14;3441:13;3486:7;3533:17;3709:21;3378:17;:15;:17::i;:::-;3364:31;;3422:9;3405:26;;3466:5;3457:14;;:6;:14;;;;;;;;3441:30;;3496:1;3486:11;;3481:218;3511:1;3503:5;:9;3499:13;;:1;:13;;;3481:218;;;3566:19;;3553:56;;;;;;;;;;;;;;;-1:-1:-1;;;;;3566:19:8;;;;3553:53;;:56;;;;;;;;;;;;;;;3566:19;;3553:56;;;5:2:-1;;;;30:1;27;20:12;5:2;3553:56:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3553:56:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:56:8;-1:-1:-1;;;;;3623:19:8;;;;;;:8;3553:56;3623:19;;;;:28;;;;;;3674:14;;;;;-1:-1:-1;3514:3:8;;;;;3553:56;-1:-1:-1;3481:218:8;;;3746:19;;3733:64;;;;;;;-1:-1:-1;;3787:9:8;;3733:64;;;;;;;-1:-1:-1;;;;;3746:19:8;;;;3733:53;;:64;;;;;;;;;;;;;;;3746:19;;3733:64;;;5:2:-1;;;;30:1;27;20:12;5:2;3733:64:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3733:64:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3733:64:8;-1:-1:-1;;;;;3807:23:8;;;;;:8;3733:64;3807:23;;;;:33;;;;;;;;-1:-1:-1;;;;;3326:521:8:o;4584:1938::-;4752:15;4874:31;5313:21;5535;6259:20;4921:19;;;;;;;;;-1:-1:-1;;;;;4921:19:8;-1:-1:-1;;;;;4908:54:8;;:56;;;;;-1:-1:-1;;;4908:56:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4908:56:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4908:56:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4908:56:8;4978:34;;;;4908:56;;-1:-1:-1;4978:34:8;;:39;4974:276;;;5033:59;;;4974:276;;;5113:33;;:60;;5109:141;;5189:50;5204:9;5215:23;5189:14;:50::i;:::-;5346:1;5382:33;;;5338:28;;;;;;-1:-1:-1;5382:49:8;;5381:56;5377:121;;5460:27;5453:34;;;;5377:121;5559:36;;;;:26;;;:36;;;;;;;;5609:33;;;:50;;;;;;5669:34;;;:39;;5559:36;5669:39;;;;;;;-1:-1:-1;;5669:39:8;;;;;;;5718:54;;5559:36;;;:40;;5718:54;;;;;;;;;;5559:40;;-1:-1:-1;5786:20:8;5782:85;;;5822:19;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;5822:34:8;;;;;;;;;;;5782:85;5899:28;;;;;;;;5880:47;;;;5876:309;;5943:28;;;:46;;-1:-1:-1;;5943:46:8;;;;;;;;;;;;-1:-1:-1;;6089:19:8;;6076:32;;;;;;6072:103;;6135:25;6128:32;;;;6072:103;6302:34;;;;;;6282:17;:15;:17::i;:::-;6362:28;;;;6282:54;;;;-1:-1:-1;;;6362:28:8;;;;:45;;:49;6350:61;;;;;;6346:125;;;6434:26;6427:33;;;;6346:125;6488:27;6481:34;;4584:1938;;;;;;;;;;;:::o;6568:224::-;6652:9;6647:139;6671:19;;;:26;6667:30;;6647:139;;;6725:9;:26;;:50;6752:9;:19;;6772:1;6752:22;;;;;;;;;;;;;;;;;;;;;;6725:50;;;;;;;;;;;;6718:57;;-1:-1:-1;;6718:57:8;;;;6699:3;6647:139;;6836:345;6931:6;6926:249;6947:15;;6943:19;;6926:249;;;6987:11;;7002:7;;6987:8;;6996:1;;6987:11;;;;;;;;;;;;;;;;:22;6983:182;;;7052:15;;7043:8;;-1:-1:-1;;7052:19:8;;;7043:29;;;;;;;;;;;;;;7029:8;7038:1;7029:11;;;;;;;;;;;;;;;;;;;:43;7108:15;;-1:-1:-1;;7108:19:8;7090:37;7108:8;:19;7090:37;:::i;:::-;;7145:5;;6983:182;6964:3;;6926:249;;;6836:345;;;:::o;7212:389::-;7323:25;7338:9;7323:14;:25::i;:::-;7358:59;;;:33;7427;;;:37;;;7474:34;;;:38;;-1:-1:-1;;7474:38:8;;;;;;7522:28;;;:32;;;;;;;7564:30;:19;;;7358:33;7564:30;:::i;888:9631:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;888:9631:7;;;-1:-1:-1;888:9631:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "//! The Secret Store server key retrieval service contract.\n//!\n//! Copyright 2017 Svyatoslav Nikolsky, Parity Technologies Ltd.\n//!\n//! Licensed under the Apache License, Version 2.0 (the \"License\");\n//! you may not use this file except in compliance with the License.\n//! You may obtain a copy of the License at\n//!\n//!     http://www.apache.org/licenses/LICENSE-2.0\n//!\n//! Unless required by applicable law or agreed to in writing, software\n//! distributed under the License is distributed on an \"AS IS\" BASIS,\n//! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//! See the License for the specific language governing permissions and\n//! limitations under the License.\n\npragma solidity ^0.4.18;\n\nimport \"../interfaces/SecretStoreService.sol\";\nimport \"./SecretStoreServiceBase.sol\";\n\n\n/// Server Key retrieval service contract.\n/* solium-disable-next-line */\ncontract SecretStoreServerKeyRetrievalService is SecretStoreServiceBase, ServerKeyRetrievalServiceClientApi, ServerKeyRetrievalServiceKeyServerApi {\n    /// Server key retrieval request.\n    struct ServerKeyRetrievalRequest {\n        bool isActive;\n        RequestResponses thresholdResponses;\n        RequestResponses responses;\n        bytes publicWithMaxThreshold;\n    }\n\n    /// When sever key retrieval request is received.\n    event ServerKeyRetrievalRequested(bytes32 serverKeyId);\n    /// When server key is retrieved.\n    event ServerKeyRetrieved(bytes32 indexed serverKeyId, bytes serverKeyPublic);\n    /// When error occurs during server key retrieval.\n    event ServerKeyRetrievalError(bytes32 indexed serverKeyId);\n\n    /// Constructor.\n    constructor(address keyServerSetAddressInit) SecretStoreServiceBase(keyServerSetAddressInit) public {\n        serverKeyRetrievalFee = 100 finney;\n        maxServerKeyRetrievalRequests = 8;\n    }\n\n    // === Interface methods ===\n\n    /// We do not support direct payments.\n    function() public payable {\n        revert(\"Direct payments are not supported.\");\n    }\n\n    /// Retrieve existing server key. Retrieved key will be published via ServerKeyRetrieved or ServerKeyRetrievalError.\n    function retrieveServerKey(bytes32 serverKeyId) external  payable\n        whenFeePaid(serverKeyRetrievalFee)\n    {\n        // check maximum number of requests\n        require(serverKeyRetrievalRequestsKeys.length < maxServerKeyRetrievalRequests, \"Maxiumum number of requests reached.\");\n\n        ServerKeyRetrievalRequest storage request = serverKeyRetrievalRequests[serverKeyId];\n        require(!request.isActive, \"Request is active.\");\n        deposit();\n\n        // we do not know exact threshold value here && we can not blindly trust the first response\n        // => we should agree upon two values: threshold && server key itself\n        // => assuming that all authorities will eventually respond with value/error, we will wait for:\n        // 1) at least 50% + 1 authorities agreement on the same threshold value\n        // 2) after threshold is agreed, we will wait for threshold + 1 values of server key\n\n        request.isActive = true;\n        serverKeyRetrievalRequestsKeys.push(serverKeyId);\n\n        emit ServerKeyRetrievalRequested(serverKeyId);\n    }\n\n    /// Called when retrieval is reported by key server.\n    function serverKeyRetrieved(bytes32 serverKeyId, bytes serverKeyPublic, uint8 threshold) external validPublic(serverKeyPublic) {\n        // check if request still active\n        ServerKeyRetrievalRequest storage request = serverKeyRetrievalRequests[serverKeyId];\n        if (!request.isActive) {\n            return;\n        }\n\n        // insert response (we're waiting for responses from all authorities here)\n        // it checks that tx.origin is actually the key server\n        uint8 keyServerIndex = requireKeyServer(msg.sender);\n\n        ResponseSupport responseSupport;\n        bytes memory finalServerKeyPublic;\n        (responseSupport, finalServerKeyPublic) = insertServerKeyRetrievalResponse(\n            request,\n            keyServerIndex,\n            serverKeyPublic,\n            threshold);\n\n        // ...and check if there are enough support\n        if (responseSupport == ResponseSupport.Unconfirmed) { // not confirmed (yet)\n            return;\n        }\n\n        // delete request and fire event\n        clearServerKeyRetrievalRequest(serverKeyId, request);\n        if (responseSupport == ResponseSupport.Confirmed) { // confirmed\n            emit ServerKeyRetrieved(serverKeyId, finalServerKeyPublic);\n        } else { // no consensus possible at all\n            emit ServerKeyRetrievalError(serverKeyId);\n        }\n    }\n\n    /// Called when error occurs during server key retrieval.\n    function serverKeyRetrievalError(bytes32 serverKeyId) external {\n        // check if request still active\n        ServerKeyRetrievalRequest storage request = serverKeyRetrievalRequests[serverKeyId];\n        if (!request.isActive) {\n            return;\n        }\n\n        // check that it is called by key server\n        uint8 keyServerIndex = requireKeyServer(msg.sender);\n\n        // all key servers in SS with auto-migration enabled should have a share for every key\n        // => we could make an error fatal, but let's tolerate such issues\n        // => insert invalid response and check if there are enough confirmations\n        bytes memory invalidPublic = new bytes(64);\n\n        ResponseSupport responseSupport;\n        bytes memory _finalServerKeyPublic;\n        (responseSupport, _finalServerKeyPublic) = insertServerKeyRetrievalResponse(\n            request,\n            keyServerIndex,\n            invalidPublic,\n            0xFF);\n        if (responseSupport == ResponseSupport.Unconfirmed) {\n            return;\n        }\n\n        // delete request and fire event\n        clearServerKeyRetrievalRequest(serverKeyId, request);\n        emit ServerKeyRetrievalError(serverKeyId);\n    }\n\n    /// Get count of pending server key retrieval requests.\n    function serverKeyRetrievalRequestsCount() external view returns (uint256) {\n        return serverKeyRetrievalRequestsKeys.length;\n    }\n\n    /// Get server key retrieval request with given index.\n    /// Returns: (serverKeyId)\n    function getServerKeyRetrievalRequest(uint256 index) external view returns (bytes32) {\n        bytes32 serverKeyId = serverKeyRetrievalRequestsKeys[index];\n        return (\n            serverKeyId,\n        );\n    }\n\n    /// Returs true if response from given keyServer is required.\n    function isServerKeyRetrievalResponseRequired(bytes32 serverKeyId, address keyServer) external view returns (bool) {\n        uint8 keyServerIndex = requireKeyServer(keyServer);\n        ServerKeyRetrievalRequest storage request = serverKeyRetrievalRequests[serverKeyId];\n        return isResponseRequired(request.thresholdResponses, keyServerIndex);\n    }\n\n    // === Administrative methods ===\n\n    /// Set server key retrieval fee.\n    function setServerKeyRetrievalFee(uint256 newFee)\n        public\n        onlyOwner\n    {\n        serverKeyRetrievalFee = newFee;\n    }\n\n    /// Set server key retrieval requests limit.\n    function setMaxServerKeyRetrievalRequests(uint256 newLimit)\n        public\n        onlyOwner\n    {\n        maxServerKeyRetrievalRequests = newLimit;\n    }\n\n    /// Delete server key retrieval request.\n    function deleteServerKeyRetrievalRequest(bytes32 serverKeyId)\n        public\n        onlyOwner\n    {\n        ServerKeyRetrievalRequest storage request = serverKeyRetrievalRequests[serverKeyId];\n        clearServerKeyRetrievalRequest(serverKeyId, request);\n\n        emit ServerKeyRetrievalError(serverKeyId);\n    }\n\n    // === Internal methods ===\n\n    /// Insert both threshold and public response.\n    function insertServerKeyRetrievalResponse(\n        ServerKeyRetrievalRequest storage request,\n        uint8 keyServerIndex,\n        bytes serverKeyPublic,\n        uint8 threshold) private returns (ResponseSupport, bytes)\n    {\n        // insert threshold response\n        bytes32 thresholdResponse = bytes32(threshold);\n        ResponseSupport thresholdResponseSupport = insertResponse(\n            request.thresholdResponses,\n            keyServerIndex,\n            keyServersCount() / 2,\n            thresholdResponse);\n        if (thresholdResponseSupport == ResponseSupport.Impossible) {\n            return (thresholdResponseSupport, serverKeyPublic);\n        }\n\n        // insert response itself\n        bytes32 response = keccak256(abi.encodePacked(serverKeyPublic, threshold));\n        ResponseSupport responseSupport = insertResponse(\n            request.responses,\n            keyServerIndex,\n            threshold,\n            response);\n        if (thresholdResponseSupport == ResponseSupport.Unconfirmed) {\n            // even though threshold is not yet confirmed, we might want to remember public\n            // to return it in future\n            if (threshold != 0xFF && request.responses.maxResponseSupport == request.responses.responsesSupport[response]) {\n                request.publicWithMaxThreshold = serverKeyPublic;\n            }\n\n            // if threshold we have responded with is not confirmed, public is also not confirmed\n            return (ResponseSupport.Unconfirmed, serverKeyPublic);\n        }\n        if (responseSupport == ResponseSupport.Unconfirmed) {\n            // threshold is confirmed and response is unconfirmed\n            // => we might want to check if some other public has enough confirmations already\n            if (request.responses.maxResponseSupport >= threshold + 1) {\n                return (ResponseSupport.Confirmed, request.publicWithMaxThreshold);\n            }\n        }\n\n        return (responseSupport, serverKeyPublic);\n    }\n\n    /// Clear server key retrieval request traces.\n    function clearServerKeyRetrievalRequest(bytes32 serverKeyId, ServerKeyRetrievalRequest storage request) private {\n        clearResponses(request.responses);\n        delete serverKeyRetrievalRequests[serverKeyId];\n\n        removeRequestKey(serverKeyRetrievalRequestsKeys, serverKeyId);\n    }\n\n    /// Server key retrieval fee.\n    uint256 public serverKeyRetrievalFee;\n    /// Maximal number of active server key retrieval requests. We're limiting this number to avoid\n    /// infinite gas costs of some functions.\n    uint256 public maxServerKeyRetrievalRequests;\n\n    /// Pending retrieval requests.\n    mapping (bytes32 => ServerKeyRetrievalRequest) private serverKeyRetrievalRequests;\n    /// Pending retrieval requests keys.\n    bytes32[] private serverKeyRetrievalRequestsKeys;\n}\n",
  "sourcePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServerKeyRetrievalService.sol",
  "ast": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServerKeyRetrievalService.sol",
    "exportedSymbols": {
      "SecretStoreServerKeyRetrievalService": [
        2984
      ]
    },
    "id": 2985,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2479,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".18"
        ],
        "nodeType": "PragmaDirective",
        "src": "700:24:7"
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/SecretStoreService.sol",
        "file": "../interfaces/SecretStoreService.sol",
        "id": 2480,
        "nodeType": "ImportDirective",
        "scope": 2985,
        "sourceUnit": 872,
        "src": "726:46:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServiceBase.sol",
        "file": "./SecretStoreServiceBase.sol",
        "id": 2481,
        "nodeType": "ImportDirective",
        "scope": 2985,
        "sourceUnit": 3513,
        "src": "773:38:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2482,
              "name": "SecretStoreServiceBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3512,
              "src": "937:22:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SecretStoreServiceBase_$3512",
                "typeString": "contract SecretStoreServiceBase"
              }
            },
            "id": 2483,
            "nodeType": "InheritanceSpecifier",
            "src": "937:22:7"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2484,
              "name": "ServerKeyRetrievalServiceClientApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 660,
              "src": "961:34:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ServerKeyRetrievalServiceClientApi_$660",
                "typeString": "contract ServerKeyRetrievalServiceClientApi"
              }
            },
            "id": 2485,
            "nodeType": "InheritanceSpecifier",
            "src": "961:34:7"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2486,
              "name": "ServerKeyRetrievalServiceKeyServerApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 700,
              "src": "997:37:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ServerKeyRetrievalServiceKeyServerApi_$700",
                "typeString": "contract ServerKeyRetrievalServiceKeyServerApi"
              }
            },
            "id": 2487,
            "nodeType": "InheritanceSpecifier",
            "src": "997:37:7"
          }
        ],
        "contractDependencies": [
          660,
          700,
          3512,
          4823
        ],
        "contractKind": "contract",
        "documentation": "Server Key retrieval service contract.",
        "fullyImplemented": true,
        "id": 2984,
        "linearizedBaseContracts": [
          2984,
          700,
          660,
          3512,
          4823
        ],
        "name": "SecretStoreServerKeyRetrievalService",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest",
            "id": 2496,
            "members": [
              {
                "constant": false,
                "id": 2489,
                "name": "isActive",
                "nodeType": "VariableDeclaration",
                "scope": 2496,
                "src": "1122:13:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2488,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1122:4:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2491,
                "name": "thresholdResponses",
                "nodeType": "VariableDeclaration",
                "scope": 2496,
                "src": "1145:35:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2490,
                  "name": "RequestResponses",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3010,
                  "src": "1145:16:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2493,
                "name": "responses",
                "nodeType": "VariableDeclaration",
                "scope": 2496,
                "src": "1190:26:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2492,
                  "name": "RequestResponses",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3010,
                  "src": "1190:16:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2495,
                "name": "publicWithMaxThreshold",
                "nodeType": "VariableDeclaration",
                "scope": 2496,
                "src": "1226:28:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2494,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1226:5:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ServerKeyRetrievalRequest",
            "nodeType": "StructDefinition",
            "scope": 2984,
            "src": "1079:182:7",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": "When sever key retrieval request is received.",
            "id": 2500,
            "name": "ServerKeyRetrievalRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2498,
                  "indexed": false,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2500,
                  "src": "1355:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2497,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1355:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1354:21:7"
            },
            "src": "1321:55:7"
          },
          {
            "anonymous": false,
            "documentation": "When server key is retrieved.",
            "id": 2506,
            "name": "ServerKeyRetrieved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2502,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2506,
                  "src": "1444:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2501,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1444:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2504,
                  "indexed": false,
                  "name": "serverKeyPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2506,
                  "src": "1473:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2503,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1473:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1443:52:7"
            },
            "src": "1419:77:7"
          },
          {
            "anonymous": false,
            "documentation": "When error occurs during server key retrieval.",
            "id": 2510,
            "name": "ServerKeyRetrievalError",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2508,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2510,
                  "src": "1586:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2507,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1586:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1585:29:7"
            },
            "src": "1556:59:7"
          },
          {
            "body": {
              "id": 2526,
              "nodeType": "Block",
              "src": "1742:94:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2518,
                      "name": "serverKeyRetrievalFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2974,
                      "src": "1752:21:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 2519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1776:10:7",
                      "subdenomination": "finney",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100000000000000000_by_1",
                        "typeString": "int_const 100000000000000000"
                      },
                      "value": "100"
                    },
                    "src": "1752:34:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2521,
                  "nodeType": "ExpressionStatement",
                  "src": "1752:34:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2522,
                      "name": "maxServerKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2976,
                      "src": "1796:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "38",
                      "id": 2523,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1828:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_8_by_1",
                        "typeString": "int_const 8"
                      },
                      "value": "8"
                    },
                    "src": "1796:33:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2525,
                  "nodeType": "ExpressionStatement",
                  "src": "1796:33:7"
                }
              ]
            },
            "documentation": "Constructor.",
            "id": 2527,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2515,
                    "name": "keyServerSetAddressInit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2512,
                    "src": "1710:23:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 2516,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2514,
                  "name": "SecretStoreServiceBase",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3512,
                  "src": "1687:22:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SecretStoreServiceBase_$3512_$",
                    "typeString": "type(contract SecretStoreServiceBase)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1687:47:7"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2513,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2512,
                  "name": "keyServerSetAddressInit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2527,
                  "src": "1654:31:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2511,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1654:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1653:33:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2517,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1742:0:7"
            },
            "scope": 2984,
            "src": "1642:194:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2534,
              "nodeType": "Block",
              "src": "1945:61:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "446972656374207061796d656e747320617265206e6f7420737570706f727465642e",
                        "id": 2531,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1962:36:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_22159a6aedc0afb0346da3c9665c064787d29d6f4960686359dab71ba8634b40",
                          "typeString": "literal_string \"Direct payments are not supported.\""
                        },
                        "value": "Direct payments are not supported."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_22159a6aedc0afb0346da3c9665c064787d29d6f4960686359dab71ba8634b40",
                          "typeString": "literal_string \"Direct payments are not supported.\""
                        }
                      ],
                      "id": 2530,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4843,
                        4844
                      ],
                      "referencedDeclaration": 4844,
                      "src": "1955:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 2532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1955:44:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2533,
                  "nodeType": "ExpressionStatement",
                  "src": "1955:44:7"
                }
              ]
            },
            "documentation": "We do not support direct payments.",
            "id": 2535,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2528,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1927:2:7"
            },
            "payable": true,
            "returnParameters": {
              "id": 2529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1945:0:7"
            },
            "scope": 2984,
            "src": "1919:87:7",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2583,
              "nodeType": "Block",
              "src": "2246:955:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2544,
                            "name": "serverKeyRetrievalRequestsKeys",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2983,
                            "src": "2308:30:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 2545,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2308:37:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2546,
                          "name": "maxServerKeyRetrievalRequests",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2976,
                          "src": "2348:29:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2308:69:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d617869756d756d206e756d626572206f6620726571756573747320726561636865642e",
                        "id": 2548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2379:38:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_93892248888fcf3cecda0332caa46f61cd2323418c2d7b76f40d44d68c52a7b6",
                          "typeString": "literal_string \"Maxiumum number of requests reached.\""
                        },
                        "value": "Maxiumum number of requests reached."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_93892248888fcf3cecda0332caa46f61cd2323418c2d7b76f40d44d68c52a7b6",
                          "typeString": "literal_string \"Maxiumum number of requests reached.\""
                        }
                      ],
                      "id": 2543,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2300:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2300:118:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2550,
                  "nodeType": "ExpressionStatement",
                  "src": "2300:118:7"
                },
                {
                  "assignments": [
                    2552
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2552,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2584,
                      "src": "2429:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2551,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "2429:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2556,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2553,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "2473:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2555,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2554,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2537,
                      "src": "2500:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2473:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2429:83:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2530:17:7",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2558,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2552,
                            "src": "2531:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                              "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                            }
                          },
                          "id": 2559,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isActive",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2489,
                          "src": "2531:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "52657175657374206973206163746976652e",
                        "id": 2561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2549:20:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_39f03ffe7f4aee55304523cafb4e55f3c8a51cfa5728a728a407c34ab9489f7b",
                          "typeString": "literal_string \"Request is active.\""
                        },
                        "value": "Request is active."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_39f03ffe7f4aee55304523cafb4e55f3c8a51cfa5728a728a407c34ab9489f7b",
                          "typeString": "literal_string \"Request is active.\""
                        }
                      ],
                      "id": 2557,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2522:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2522:48:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2563,
                  "nodeType": "ExpressionStatement",
                  "src": "2522:48:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2564,
                      "name": "deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3180,
                      "src": "2580:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 2565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2580:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2566,
                  "nodeType": "ExpressionStatement",
                  "src": "2580:9:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2567,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2552,
                        "src": "3057:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      },
                      "id": 2569,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "isActive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2489,
                      "src": "3057:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2570,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3076:4:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3057:23:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2572,
                  "nodeType": "ExpressionStatement",
                  "src": "3057:23:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2576,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2537,
                        "src": "3126:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2573,
                        "name": "serverKeyRetrievalRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2983,
                        "src": "3090:30:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 2575,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3090:35:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) returns (uint256)"
                      }
                    },
                    "id": 2577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3090:48:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2578,
                  "nodeType": "ExpressionStatement",
                  "src": "3090:48:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2580,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2537,
                        "src": "3182:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2579,
                      "name": "ServerKeyRetrievalRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2500
                      ],
                      "referencedDeclaration": 2500,
                      "src": "3154:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3154:40:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2582,
                  "nodeType": "EmitStatement",
                  "src": "3149:45:7"
                }
              ]
            },
            "documentation": "Retrieve existing server key. Retrieved key will be published via ServerKeyRetrieved or ServerKeyRetrievalError.",
            "id": 2584,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2540,
                    "name": "serverKeyRetrievalFee",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2974,
                    "src": "2219:21:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2541,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2539,
                  "name": "whenFeePaid",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3024,
                  "src": "2207:11:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2207:34:7"
              }
            ],
            "name": "retrieveServerKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2537,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2584,
                  "src": "2160:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2536,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2160:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2159:21:7"
            },
            "payable": true,
            "returnParameters": {
              "id": 2542,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2246:0:7"
            },
            "scope": 2984,
            "src": "2133:1068:7",
            "stateMutability": "payable",
            "superFunction": 659,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2660,
              "nodeType": "Block",
              "src": "3391:1214:7",
              "statements": [
                {
                  "assignments": [
                    2597
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2597,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2661,
                      "src": "3442:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2596,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "3442:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2601,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2598,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "3486:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2600,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2599,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2586,
                      "src": "3513:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3486:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3442:83:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3539:17:7",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2602,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2597,
                        "src": "3540:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      },
                      "id": 2603,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isActive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2489,
                      "src": "3540:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2607,
                  "nodeType": "IfStatement",
                  "src": "3535:54:7",
                  "trueBody": {
                    "id": 2606,
                    "nodeType": "Block",
                    "src": "3558:31:7",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 2595,
                        "id": 2605,
                        "nodeType": "Return",
                        "src": "3572:7:7"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2609
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2609,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2661,
                      "src": "3745:20:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2608,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3745:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2614,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2611,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "3785:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3785:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2610,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "3768:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 2613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3768:28:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3745:51:7"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2616,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 2661,
                      "src": "3807:31:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2615,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "3807:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2617,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3807:31:7"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2619,
                      "name": "finalServerKeyPublic",
                      "nodeType": "VariableDeclaration",
                      "scope": 2661,
                      "src": "3848:33:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2618,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3848:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2620,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3848:33:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2621,
                          "name": "responseSupport",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2616,
                          "src": "3892:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2622,
                          "name": "finalServerKeyPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2619,
                          "src": "3909:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 2623,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "3891:39:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2625,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2597,
                          "src": "3979:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2626,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2609,
                          "src": "4000:14:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2627,
                          "name": "serverKeyPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2588,
                          "src": "4028:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2628,
                          "name": "threshold",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2590,
                          "src": "4057:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 2624,
                        "name": "insertServerKeyRetrievalResponse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2949,
                        "src": "3933:32:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$_t_uint8_$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                          "typeString": "function (struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer,uint8,bytes memory,uint8) returns (enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                        }
                      },
                      "id": 2629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3933:134:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                      }
                    },
                    "src": "3891:176:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2631,
                  "nodeType": "ExpressionStatement",
                  "src": "3891:176:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2632,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2616,
                      "src": "4134:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2633,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "4153:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4153:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "4134:46:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2638,
                  "nodeType": "IfStatement",
                  "src": "4130:106:7",
                  "trueBody": {
                    "id": 2637,
                    "nodeType": "Block",
                    "src": "4182:54:7",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 2595,
                        "id": 2636,
                        "nodeType": "Return",
                        "src": "4219:7:7"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2640,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2586,
                        "src": "4318:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2641,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2597,
                        "src": "4331:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 2639,
                      "name": "clearServerKeyRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2972,
                      "src": "4287:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 2642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4287:52:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2643,
                  "nodeType": "ExpressionStatement",
                  "src": "4287:52:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2644,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2616,
                      "src": "4353:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2645,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "4372:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2646,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Confirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4372:25:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "4353:44:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2658,
                    "nodeType": "Block",
                    "src": "4501:98:7",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2655,
                              "name": "serverKeyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2586,
                              "src": "4576:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2654,
                            "name": "ServerKeyRetrievalError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2510
                            ],
                            "referencedDeclaration": 2510,
                            "src": "4552:23:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4552:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2657,
                        "nodeType": "EmitStatement",
                        "src": "4547:41:7"
                      }
                    ]
                  },
                  "id": 2659,
                  "nodeType": "IfStatement",
                  "src": "4349:250:7",
                  "trueBody": {
                    "id": 2653,
                    "nodeType": "Block",
                    "src": "4399:96:7",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2649,
                              "name": "serverKeyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2586,
                              "src": "4450:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2650,
                              "name": "finalServerKeyPublic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2619,
                              "src": "4463:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2648,
                            "name": "ServerKeyRetrieved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2506,
                              650
                            ],
                            "referencedDeclaration": 2506,
                            "src": "4431:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory)"
                            }
                          },
                          "id": 2651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4431:53:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2652,
                        "nodeType": "EmitStatement",
                        "src": "4426:58:7"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "Called when retrieval is reported by key server.",
            "id": 2661,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2593,
                    "name": "serverKeyPublic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2588,
                    "src": "3374:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 2594,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2592,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "3362:11:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3362:28:7"
              }
            ],
            "name": "serverKeyRetrieved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2586,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2661,
                  "src": "3292:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2585,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3292:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2588,
                  "name": "serverKeyPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2661,
                  "src": "3313:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2587,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3313:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2590,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 2661,
                  "src": "3336:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2589,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3336:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3291:61:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2595,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3391:0:7"
            },
            "scope": 2984,
            "src": "3264:1341:7",
            "stateMutability": "nonpayable",
            "superFunction": 673,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2725,
              "nodeType": "Block",
              "src": "4736:1133:7",
              "statements": [
                {
                  "assignments": [
                    2667
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2667,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "4787:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2666,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "4787:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2671,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2668,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "4831:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2670,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2669,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2663,
                      "src": "4858:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4831:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4787:83:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "4884:17:7",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2672,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2667,
                        "src": "4885:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      },
                      "id": 2673,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isActive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2489,
                      "src": "4885:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2677,
                  "nodeType": "IfStatement",
                  "src": "4880:54:7",
                  "trueBody": {
                    "id": 2676,
                    "nodeType": "Block",
                    "src": "4903:31:7",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 2665,
                        "id": 2675,
                        "nodeType": "Return",
                        "src": "4917:7:7"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2679
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2679,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "4993:20:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2678,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "4993:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2684,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2681,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "5033:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2682,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5033:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2680,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "5016:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 2683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5016:28:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4993:51:7"
                },
                {
                  "assignments": [
                    2686
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2686,
                      "name": "invalidPublic",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "5307:26:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2685,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5307:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2691,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3634",
                        "id": 2689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5346:2:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_64_by_1",
                          "typeString": "int_const 64"
                        },
                        "value": "64"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_64_by_1",
                          "typeString": "int_const 64"
                        }
                      ],
                      "id": 2688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5336:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 2687,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5340:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 2690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5336:13:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5307:42:7"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2693,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "5360:31:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2692,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "5360:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2694,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5360:31:7"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2696,
                      "name": "_finalServerKeyPublic",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "5401:34:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2695,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5401:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2697,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5401:34:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2698,
                          "name": "responseSupport",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2693,
                          "src": "5446:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2699,
                          "name": "_finalServerKeyPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2696,
                          "src": "5463:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 2700,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5445:40:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2702,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2667,
                          "src": "5534:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2703,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2679,
                          "src": "5555:14:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2704,
                          "name": "invalidPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2686,
                          "src": "5583:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30784646",
                          "id": 2705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5610:4:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_255_by_1",
                            "typeString": "int_const 255"
                          },
                          "value": "0xFF"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_rational_255_by_1",
                            "typeString": "int_const 255"
                          }
                        ],
                        "id": 2701,
                        "name": "insertServerKeyRetrievalResponse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2949,
                        "src": "5488:32:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$_t_uint8_$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                          "typeString": "function (struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer,uint8,bytes memory,uint8) returns (enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                        }
                      },
                      "id": 2706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5488:127:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                      }
                    },
                    "src": "5445:170:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2708,
                  "nodeType": "ExpressionStatement",
                  "src": "5445:170:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2709,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2693,
                      "src": "5629:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2710,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "5648:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5648:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "5629:46:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2715,
                  "nodeType": "IfStatement",
                  "src": "5625:83:7",
                  "trueBody": {
                    "id": 2714,
                    "nodeType": "Block",
                    "src": "5677:31:7",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 2665,
                        "id": 2713,
                        "nodeType": "Return",
                        "src": "5691:7:7"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2717,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2663,
                        "src": "5790:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2718,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2667,
                        "src": "5803:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 2716,
                      "name": "clearServerKeyRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2972,
                      "src": "5759:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5759:52:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2720,
                  "nodeType": "ExpressionStatement",
                  "src": "5759:52:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2722,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2663,
                        "src": "5850:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2721,
                      "name": "ServerKeyRetrievalError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2510
                      ],
                      "referencedDeclaration": 2510,
                      "src": "5826:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5826:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2724,
                  "nodeType": "EmitStatement",
                  "src": "5821:41:7"
                }
              ]
            },
            "documentation": "Called when error occurs during server key retrieval.",
            "id": 2726,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "serverKeyRetrievalError",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2663,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2726,
                  "src": "4706:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4706:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4705:21:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2665,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4736:0:7"
            },
            "scope": 2984,
            "src": "4673:1196:7",
            "stateMutability": "nonpayable",
            "superFunction": 678,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2734,
              "nodeType": "Block",
              "src": "6010:61:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2731,
                      "name": "serverKeyRetrievalRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2983,
                      "src": "6027:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 2732,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "6027:37:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2730,
                  "id": 2733,
                  "nodeType": "Return",
                  "src": "6020:44:7"
                }
              ]
            },
            "documentation": "Get count of pending server key retrieval requests.",
            "id": 2735,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "serverKeyRetrievalRequestsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5975:2:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2729,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "6001:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6001:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6000:9:7"
            },
            "scope": 2984,
            "src": "5935:136:7",
            "stateMutability": "view",
            "superFunction": 683,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2751,
              "nodeType": "Block",
              "src": "6252:129:7",
              "statements": [
                {
                  "assignments": [
                    2743
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2743,
                      "name": "serverKeyId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2752,
                      "src": "6262:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2742,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6262:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2747,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2744,
                      "name": "serverKeyRetrievalRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2983,
                      "src": "6284:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 2746,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2745,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2737,
                      "src": "6315:5:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6284:37:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6262:59:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2748,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2743,
                        "src": "6352:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      null
                    ],
                    "id": 2749,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6338:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$",
                      "typeString": "tuple(bytes32)"
                    }
                  },
                  "functionReturnParameters": 2741,
                  "id": 2750,
                  "nodeType": "Return",
                  "src": "6331:43:7"
                }
              ]
            },
            "documentation": "Get server key retrieval request with given index.\n Returns: (serverKeyId)",
            "id": 2752,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getServerKeyRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2738,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2737,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2752,
                  "src": "6205:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2736,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6205:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6204:15:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2740,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2752,
                  "src": "6243:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2739,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6243:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6242:9:7"
            },
            "scope": 2984,
            "src": "6167:214:7",
            "stateMutability": "view",
            "superFunction": 690,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2779,
              "nodeType": "Block",
              "src": "6568:239:7",
              "statements": [
                {
                  "assignments": [
                    2762
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2762,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2780,
                      "src": "6578:20:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2761,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6578:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2766,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2764,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2756,
                        "src": "6618:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2763,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "6601:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 2765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6601:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6578:50:7"
                },
                {
                  "assignments": [
                    2768
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2768,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2780,
                      "src": "6638:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2767,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "6638:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2772,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2769,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "6682:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2771,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2770,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2754,
                      "src": "6709:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6682:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6638:83:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2774,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2768,
                          "src": "6757:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        "id": 2775,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "thresholdResponses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2491,
                        "src": "6757:26:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2776,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2762,
                        "src": "6785:14:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 2773,
                      "name": "isResponseRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3224,
                      "src": "6738:18:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$returns$_t_bool_$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8) view returns (bool)"
                      }
                    },
                    "id": 2777,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6738:62:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2760,
                  "id": 2778,
                  "nodeType": "Return",
                  "src": "6731:69:7"
                }
              ]
            },
            "documentation": "Returs true if response from given keyServer is required.",
            "id": 2780,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isServerKeyRetrievalResponseRequired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2754,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2780,
                  "src": "6499:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2753,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6499:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2756,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2780,
                  "src": "6520:17:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6520:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6498:40:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2760,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2759,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2780,
                  "src": "6562:4:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2758,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6562:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6561:6:7"
            },
            "scope": 2984,
            "src": "6453:354:7",
            "stateMutability": "view",
            "superFunction": 699,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2791,
              "nodeType": "Block",
              "src": "6977:47:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2789,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2787,
                      "name": "serverKeyRetrievalFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2974,
                      "src": "6987:21:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2788,
                      "name": "newFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2782,
                      "src": "7011:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6987:30:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2790,
                  "nodeType": "ExpressionStatement",
                  "src": "6987:30:7"
                }
              ]
            },
            "documentation": "Set server key retrieval fee.",
            "id": 2792,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2785,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2784,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "6963:9:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6963:9:7"
              }
            ],
            "name": "setServerKeyRetrievalFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2782,
                  "name": "newFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "6924:14:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2781,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6924:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6923:16:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2786,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6977:0:7"
            },
            "scope": 2984,
            "src": "6890:134:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2803,
              "nodeType": "Block",
              "src": "7176:57:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2799,
                      "name": "maxServerKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2976,
                      "src": "7186:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2800,
                      "name": "newLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2794,
                      "src": "7218:8:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7186:40:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2802,
                  "nodeType": "ExpressionStatement",
                  "src": "7186:40:7"
                }
              ]
            },
            "documentation": "Set server key retrieval requests limit.",
            "id": 2804,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2797,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2796,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "7162:9:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7162:9:7"
              }
            ],
            "name": "setMaxServerKeyRetrievalRequests",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2794,
                  "name": "newLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2804,
                  "src": "7121:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2793,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7121:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7120:18:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2798,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7176:0:7"
            },
            "scope": 2984,
            "src": "7079:154:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2826,
              "nodeType": "Block",
              "src": "7383:214:7",
              "statements": [
                {
                  "assignments": [
                    2812
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2812,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2827,
                      "src": "7393:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2811,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "7393:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2816,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2813,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "7437:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2815,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2814,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2806,
                      "src": "7464:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7437:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7393:83:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2818,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2806,
                        "src": "7517:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2819,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2812,
                        "src": "7530:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 2817,
                      "name": "clearServerKeyRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2972,
                      "src": "7486:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 2820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7486:52:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2821,
                  "nodeType": "ExpressionStatement",
                  "src": "7486:52:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2823,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2806,
                        "src": "7578:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2822,
                      "name": "ServerKeyRetrievalError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2510
                      ],
                      "referencedDeclaration": 2510,
                      "src": "7554:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7554:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2825,
                  "nodeType": "EmitStatement",
                  "src": "7549:41:7"
                }
              ]
            },
            "documentation": "Delete server key retrieval request.",
            "id": 2827,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2809,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2808,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "7369:9:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7369:9:7"
              }
            ],
            "name": "deleteServerKeyRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2806,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2827,
                  "src": "7325:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2805,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7325:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7324:21:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2810,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7383:0:7"
            },
            "scope": 2984,
            "src": "7284:313:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2948,
              "nodeType": "Block",
              "src": "7912:1766:7",
              "statements": [
                {
                  "assignments": [
                    2843
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2843,
                      "name": "thresholdResponse",
                      "nodeType": "VariableDeclaration",
                      "scope": 2949,
                      "src": "7959:25:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2842,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7959:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2847,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2845,
                        "name": "threshold",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2835,
                        "src": "7995:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 2844,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7987:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": "bytes32"
                    },
                    "id": 2846,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7987:18:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7959:46:7"
                },
                {
                  "assignments": [
                    2849
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2849,
                      "name": "thresholdResponseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 2949,
                      "src": "8015:40:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2848,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "8015:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2860,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2851,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2829,
                          "src": "8086:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        "id": 2852,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "thresholdResponses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2491,
                        "src": "8086:26:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2853,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2831,
                        "src": "8126:14:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 2857,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2854,
                            "name": "keyServersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "8154:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                              "typeString": "function () view returns (uint8)"
                            }
                          },
                          "id": 2855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8154:17:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 2856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8174:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "8154:21:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2858,
                        "name": "thresholdResponse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2843,
                        "src": "8189:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2850,
                      "name": "insertResponse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3378,
                      "src": "8058:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$_t_uint8_$_t_bytes32_$returns$_t_enum$_ResponseSupport_$2994_$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8,uint8,bytes32) returns (enum SecretStoreServiceBase.ResponseSupport)"
                      }
                    },
                    "id": 2859,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8058:149:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8015:192:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2861,
                      "name": "thresholdResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2849,
                      "src": "8221:24:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2862,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "8249:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2863,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Impossible",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8249:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "8221:54:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2870,
                  "nodeType": "IfStatement",
                  "src": "8217:135:7",
                  "trueBody": {
                    "id": 2869,
                    "nodeType": "Block",
                    "src": "8277:75:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2865,
                              "name": "thresholdResponseSupport",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2849,
                              "src": "8299:24:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2866,
                              "name": "serverKeyPublic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2833,
                              "src": "8325:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 2867,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8298:43:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 2841,
                        "id": 2868,
                        "nodeType": "Return",
                        "src": "8291:50:7"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2872
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2872,
                      "name": "response",
                      "nodeType": "VariableDeclaration",
                      "scope": 2949,
                      "src": "8396:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2871,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8396:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2880,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2876,
                            "name": "serverKeyPublic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2833,
                            "src": "8442:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2877,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2835,
                            "src": "8459:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2874,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "8425:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8425:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8425:44:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2873,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "8415:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 2879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8415:55:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8396:74:7"
                },
                {
                  "assignments": [
                    2882
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2882,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 2949,
                      "src": "8480:31:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2881,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "8480:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2890,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2884,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2829,
                          "src": "8542:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        "id": 2885,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2493,
                        "src": "8542:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2886,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2831,
                        "src": "8573:14:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2887,
                        "name": "threshold",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2835,
                        "src": "8601:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2888,
                        "name": "response",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2872,
                        "src": "8624:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2883,
                      "name": "insertResponse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3378,
                      "src": "8514:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$_t_uint8_$_t_bytes32_$returns$_t_enum$_ResponseSupport_$2994_$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8,uint8,bytes32) returns (enum SecretStoreServiceBase.ResponseSupport)"
                      }
                    },
                    "id": 2889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8514:119:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8480:153:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2894,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2891,
                      "name": "thresholdResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2849,
                      "src": "8647:24:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2892,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "8675:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2893,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8675:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "8647:55:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2922,
                  "nodeType": "IfStatement",
                  "src": "8643:573:7",
                  "trueBody": {
                    "id": 2921,
                    "nodeType": "Block",
                    "src": "8704:512:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2895,
                              "name": "threshold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2835,
                              "src": "8852:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30784646",
                              "id": 2896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8865:4:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_255_by_1",
                                "typeString": "int_const 255"
                              },
                              "value": "0xFF"
                            },
                            "src": "8852:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2898,
                                  "name": "request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2829,
                                  "src": "8873:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                    "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                  }
                                },
                                "id": 2899,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "responses",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2493,
                                "src": "8873:17:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                                }
                              },
                              "id": 2900,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maxResponseSupport",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3006,
                              "src": "8873:36:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2901,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2829,
                                    "src": "8913:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                    }
                                  },
                                  "id": 2902,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "responses",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2493,
                                  "src": "8913:17:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                    "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                                  }
                                },
                                "id": 2903,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "responsesSupport",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3004,
                                "src": "8913:34:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                                  "typeString": "mapping(bytes32 => uint8)"
                                }
                              },
                              "id": 2905,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2904,
                                "name": "response",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2872,
                                "src": "8948:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8913:44:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "8873:84:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8852:105:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2915,
                        "nodeType": "IfStatement",
                        "src": "8848:192:7",
                        "trueBody": {
                          "id": 2914,
                          "nodeType": "Block",
                          "src": "8959:81:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2908,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2829,
                                    "src": "8977:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                    }
                                  },
                                  "id": 2910,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "publicWithMaxThreshold",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2495,
                                  "src": "8977:30:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2911,
                                  "name": "serverKeyPublic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2833,
                                  "src": "9010:15:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "8977:48:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 2913,
                              "nodeType": "ExpressionStatement",
                              "src": "8977:48:7"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2916,
                                "name": "ResponseSupport",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "9160:15:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                                  "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                                }
                              },
                              "id": 2917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Unconfirmed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9160:27:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2918,
                              "name": "serverKeyPublic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2833,
                              "src": "9189:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 2919,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9159:46:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 2841,
                        "id": 2920,
                        "nodeType": "Return",
                        "src": "9152:53:7"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2923,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2882,
                      "src": "9229:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2924,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "9248:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2925,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9248:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "9229:46:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2943,
                  "nodeType": "IfStatement",
                  "src": "9225:395:7",
                  "trueBody": {
                    "id": 2942,
                    "nodeType": "Block",
                    "src": "9277:343:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 2933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2927,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2829,
                                "src": "9456:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                  "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                }
                              },
                              "id": 2928,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "responses",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2493,
                              "src": "9456:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                              }
                            },
                            "id": 2929,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "maxResponseSupport",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3006,
                            "src": "9456:36:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2930,
                              "name": "threshold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2835,
                              "src": "9496:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9508:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "9496:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "9456:53:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2941,
                        "nodeType": "IfStatement",
                        "src": "9452:158:7",
                        "trueBody": {
                          "id": 2940,
                          "nodeType": "Block",
                          "src": "9511:99:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2934,
                                      "name": "ResponseSupport",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "9537:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                                        "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                                      }
                                    },
                                    "id": 2935,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Confirmed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "9537:25:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2936,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2829,
                                      "src": "9564:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                      }
                                    },
                                    "id": 2937,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "publicWithMaxThreshold",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2495,
                                    "src": "9564:30:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  }
                                ],
                                "id": 2938,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9536:59:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_storage_$",
                                  "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes storage ref)"
                                }
                              },
                              "functionReturnParameters": 2841,
                              "id": 2939,
                              "nodeType": "Return",
                              "src": "9529:66:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2944,
                        "name": "responseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2882,
                        "src": "9638:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2945,
                        "name": "serverKeyPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2833,
                        "src": "9655:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "id": 2946,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9637:34:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 2841,
                  "id": 2947,
                  "nodeType": "Return",
                  "src": "9630:41:7"
                }
              ]
            },
            "documentation": "Insert both threshold and public response.",
            "id": 2949,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insertServerKeyRetrievalResponse",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2836,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2829,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7738:41:7",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                    "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2828,
                    "name": "ServerKeyRetrievalRequest",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2496,
                    "src": "7738:25:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2831,
                  "name": "keyServerIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7789:20:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2830,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "7789:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2833,
                  "name": "serverKeyPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7819:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2832,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7819:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2835,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7850:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2834,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "7850:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7728:138:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2838,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7884:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                    "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2837,
                    "name": "ResponseSupport",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2994,
                    "src": "7884:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2840,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7901:5:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2839,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7901:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7883:24:7"
            },
            "scope": 2984,
            "src": "7687:1991:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2971,
              "nodeType": "Block",
              "src": "9847:178:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2957,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2953,
                          "src": "9872:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        "id": 2958,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2493,
                        "src": "9872:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      ],
                      "id": 2956,
                      "name": "clearResponses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "9857:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$returns$__$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer)"
                      }
                    },
                    "id": 2959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9857:33:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2960,
                  "nodeType": "ExpressionStatement",
                  "src": "9857:33:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "9900:46:7",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2961,
                        "name": "serverKeyRetrievalRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2980,
                        "src": "9907:26:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                          "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                        }
                      },
                      "id": 2963,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2962,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2951,
                        "src": "9934:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9907:39:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2965,
                  "nodeType": "ExpressionStatement",
                  "src": "9900:46:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2967,
                        "name": "serverKeyRetrievalRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2983,
                        "src": "9974:30:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2968,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2951,
                        "src": "10006:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2966,
                      "name": "removeRequestKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3457,
                      "src": "9957:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 2969,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9957:61:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2970,
                  "nodeType": "ExpressionStatement",
                  "src": "9957:61:7"
                }
              ]
            },
            "documentation": "Clear server key retrieval request traces.",
            "id": 2972,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearServerKeyRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2951,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2972,
                  "src": "9775:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9775:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2953,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 2972,
                  "src": "9796:41:7",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                    "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2952,
                    "name": "ServerKeyRetrievalRequest",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2496,
                    "src": "9796:25:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9774:64:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2955,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9847:0:7"
            },
            "scope": 2984,
            "src": "9735:290:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2974,
            "name": "serverKeyRetrievalFee",
            "nodeType": "VariableDeclaration",
            "scope": 2984,
            "src": "10065:36:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2973,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "10065:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2976,
            "name": "maxServerKeyRetrievalRequests",
            "nodeType": "VariableDeclaration",
            "scope": 2984,
            "src": "10253:44:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2975,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "10253:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2980,
            "name": "serverKeyRetrievalRequests",
            "nodeType": "VariableDeclaration",
            "scope": 2984,
            "src": "10340:81:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
              "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest)"
            },
            "typeName": {
              "id": 2979,
              "keyType": {
                "id": 2977,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "10349:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "10340:46:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2978,
                "name": "ServerKeyRetrievalRequest",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2496,
                "src": "10360:25:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                  "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2983,
            "name": "serverKeyRetrievalRequestsKeys",
            "nodeType": "VariableDeclaration",
            "scope": 2984,
            "src": "10468:48:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 2981,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "10468:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 2982,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "10468:9:7",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          }
        ],
        "scope": 2985,
        "src": "888:9631:7"
      }
    ],
    "src": "700:9820:7"
  },
  "legacyAST": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServerKeyRetrievalService.sol",
    "exportedSymbols": {
      "SecretStoreServerKeyRetrievalService": [
        2984
      ]
    },
    "id": 2985,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2479,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".18"
        ],
        "nodeType": "PragmaDirective",
        "src": "700:24:7"
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/SecretStoreService.sol",
        "file": "../interfaces/SecretStoreService.sol",
        "id": 2480,
        "nodeType": "ImportDirective",
        "scope": 2985,
        "sourceUnit": 872,
        "src": "726:46:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServiceBase.sol",
        "file": "./SecretStoreServiceBase.sol",
        "id": 2481,
        "nodeType": "ImportDirective",
        "scope": 2985,
        "sourceUnit": 3513,
        "src": "773:38:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2482,
              "name": "SecretStoreServiceBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3512,
              "src": "937:22:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SecretStoreServiceBase_$3512",
                "typeString": "contract SecretStoreServiceBase"
              }
            },
            "id": 2483,
            "nodeType": "InheritanceSpecifier",
            "src": "937:22:7"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2484,
              "name": "ServerKeyRetrievalServiceClientApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 660,
              "src": "961:34:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ServerKeyRetrievalServiceClientApi_$660",
                "typeString": "contract ServerKeyRetrievalServiceClientApi"
              }
            },
            "id": 2485,
            "nodeType": "InheritanceSpecifier",
            "src": "961:34:7"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2486,
              "name": "ServerKeyRetrievalServiceKeyServerApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 700,
              "src": "997:37:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ServerKeyRetrievalServiceKeyServerApi_$700",
                "typeString": "contract ServerKeyRetrievalServiceKeyServerApi"
              }
            },
            "id": 2487,
            "nodeType": "InheritanceSpecifier",
            "src": "997:37:7"
          }
        ],
        "contractDependencies": [
          660,
          700,
          3512,
          4823
        ],
        "contractKind": "contract",
        "documentation": "Server Key retrieval service contract.",
        "fullyImplemented": true,
        "id": 2984,
        "linearizedBaseContracts": [
          2984,
          700,
          660,
          3512,
          4823
        ],
        "name": "SecretStoreServerKeyRetrievalService",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest",
            "id": 2496,
            "members": [
              {
                "constant": false,
                "id": 2489,
                "name": "isActive",
                "nodeType": "VariableDeclaration",
                "scope": 2496,
                "src": "1122:13:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 2488,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1122:4:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2491,
                "name": "thresholdResponses",
                "nodeType": "VariableDeclaration",
                "scope": 2496,
                "src": "1145:35:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2490,
                  "name": "RequestResponses",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3010,
                  "src": "1145:16:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2493,
                "name": "responses",
                "nodeType": "VariableDeclaration",
                "scope": 2496,
                "src": "1190:26:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2492,
                  "name": "RequestResponses",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3010,
                  "src": "1190:16:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2495,
                "name": "publicWithMaxThreshold",
                "nodeType": "VariableDeclaration",
                "scope": 2496,
                "src": "1226:28:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2494,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1226:5:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ServerKeyRetrievalRequest",
            "nodeType": "StructDefinition",
            "scope": 2984,
            "src": "1079:182:7",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": "When sever key retrieval request is received.",
            "id": 2500,
            "name": "ServerKeyRetrievalRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2498,
                  "indexed": false,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2500,
                  "src": "1355:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2497,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1355:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1354:21:7"
            },
            "src": "1321:55:7"
          },
          {
            "anonymous": false,
            "documentation": "When server key is retrieved.",
            "id": 2506,
            "name": "ServerKeyRetrieved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2502,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2506,
                  "src": "1444:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2501,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1444:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2504,
                  "indexed": false,
                  "name": "serverKeyPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2506,
                  "src": "1473:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2503,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1473:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1443:52:7"
            },
            "src": "1419:77:7"
          },
          {
            "anonymous": false,
            "documentation": "When error occurs during server key retrieval.",
            "id": 2510,
            "name": "ServerKeyRetrievalError",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2508,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2510,
                  "src": "1586:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2507,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1586:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1585:29:7"
            },
            "src": "1556:59:7"
          },
          {
            "body": {
              "id": 2526,
              "nodeType": "Block",
              "src": "1742:94:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2518,
                      "name": "serverKeyRetrievalFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2974,
                      "src": "1752:21:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 2519,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1776:10:7",
                      "subdenomination": "finney",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100000000000000000_by_1",
                        "typeString": "int_const 100000000000000000"
                      },
                      "value": "100"
                    },
                    "src": "1752:34:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2521,
                  "nodeType": "ExpressionStatement",
                  "src": "1752:34:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2522,
                      "name": "maxServerKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2976,
                      "src": "1796:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "38",
                      "id": 2523,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1828:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_8_by_1",
                        "typeString": "int_const 8"
                      },
                      "value": "8"
                    },
                    "src": "1796:33:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2525,
                  "nodeType": "ExpressionStatement",
                  "src": "1796:33:7"
                }
              ]
            },
            "documentation": "Constructor.",
            "id": 2527,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2515,
                    "name": "keyServerSetAddressInit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2512,
                    "src": "1710:23:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 2516,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2514,
                  "name": "SecretStoreServiceBase",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3512,
                  "src": "1687:22:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SecretStoreServiceBase_$3512_$",
                    "typeString": "type(contract SecretStoreServiceBase)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1687:47:7"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2513,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2512,
                  "name": "keyServerSetAddressInit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2527,
                  "src": "1654:31:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2511,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1654:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1653:33:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2517,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1742:0:7"
            },
            "scope": 2984,
            "src": "1642:194:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2534,
              "nodeType": "Block",
              "src": "1945:61:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "446972656374207061796d656e747320617265206e6f7420737570706f727465642e",
                        "id": 2531,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1962:36:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_22159a6aedc0afb0346da3c9665c064787d29d6f4960686359dab71ba8634b40",
                          "typeString": "literal_string \"Direct payments are not supported.\""
                        },
                        "value": "Direct payments are not supported."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_22159a6aedc0afb0346da3c9665c064787d29d6f4960686359dab71ba8634b40",
                          "typeString": "literal_string \"Direct payments are not supported.\""
                        }
                      ],
                      "id": 2530,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4843,
                        4844
                      ],
                      "referencedDeclaration": 4844,
                      "src": "1955:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 2532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1955:44:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2533,
                  "nodeType": "ExpressionStatement",
                  "src": "1955:44:7"
                }
              ]
            },
            "documentation": "We do not support direct payments.",
            "id": 2535,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2528,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1927:2:7"
            },
            "payable": true,
            "returnParameters": {
              "id": 2529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1945:0:7"
            },
            "scope": 2984,
            "src": "1919:87:7",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2583,
              "nodeType": "Block",
              "src": "2246:955:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2544,
                            "name": "serverKeyRetrievalRequestsKeys",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2983,
                            "src": "2308:30:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 2545,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2308:37:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2546,
                          "name": "maxServerKeyRetrievalRequests",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2976,
                          "src": "2348:29:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2308:69:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d617869756d756d206e756d626572206f6620726571756573747320726561636865642e",
                        "id": 2548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2379:38:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_93892248888fcf3cecda0332caa46f61cd2323418c2d7b76f40d44d68c52a7b6",
                          "typeString": "literal_string \"Maxiumum number of requests reached.\""
                        },
                        "value": "Maxiumum number of requests reached."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_93892248888fcf3cecda0332caa46f61cd2323418c2d7b76f40d44d68c52a7b6",
                          "typeString": "literal_string \"Maxiumum number of requests reached.\""
                        }
                      ],
                      "id": 2543,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2300:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2300:118:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2550,
                  "nodeType": "ExpressionStatement",
                  "src": "2300:118:7"
                },
                {
                  "assignments": [
                    2552
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2552,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2584,
                      "src": "2429:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2551,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "2429:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2556,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2553,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "2473:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2555,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2554,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2537,
                      "src": "2500:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2473:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2429:83:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2530:17:7",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2558,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2552,
                            "src": "2531:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                              "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                            }
                          },
                          "id": 2559,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isActive",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2489,
                          "src": "2531:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "52657175657374206973206163746976652e",
                        "id": 2561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2549:20:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_39f03ffe7f4aee55304523cafb4e55f3c8a51cfa5728a728a407c34ab9489f7b",
                          "typeString": "literal_string \"Request is active.\""
                        },
                        "value": "Request is active."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_39f03ffe7f4aee55304523cafb4e55f3c8a51cfa5728a728a407c34ab9489f7b",
                          "typeString": "literal_string \"Request is active.\""
                        }
                      ],
                      "id": 2557,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2522:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2522:48:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2563,
                  "nodeType": "ExpressionStatement",
                  "src": "2522:48:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2564,
                      "name": "deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3180,
                      "src": "2580:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 2565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2580:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2566,
                  "nodeType": "ExpressionStatement",
                  "src": "2580:9:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2567,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2552,
                        "src": "3057:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      },
                      "id": 2569,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "isActive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2489,
                      "src": "3057:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2570,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3076:4:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3057:23:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2572,
                  "nodeType": "ExpressionStatement",
                  "src": "3057:23:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2576,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2537,
                        "src": "3126:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2573,
                        "name": "serverKeyRetrievalRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2983,
                        "src": "3090:30:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 2575,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3090:35:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) returns (uint256)"
                      }
                    },
                    "id": 2577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3090:48:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2578,
                  "nodeType": "ExpressionStatement",
                  "src": "3090:48:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2580,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2537,
                        "src": "3182:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2579,
                      "name": "ServerKeyRetrievalRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2500
                      ],
                      "referencedDeclaration": 2500,
                      "src": "3154:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3154:40:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2582,
                  "nodeType": "EmitStatement",
                  "src": "3149:45:7"
                }
              ]
            },
            "documentation": "Retrieve existing server key. Retrieved key will be published via ServerKeyRetrieved or ServerKeyRetrievalError.",
            "id": 2584,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2540,
                    "name": "serverKeyRetrievalFee",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2974,
                    "src": "2219:21:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 2541,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2539,
                  "name": "whenFeePaid",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3024,
                  "src": "2207:11:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2207:34:7"
              }
            ],
            "name": "retrieveServerKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2537,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2584,
                  "src": "2160:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2536,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2160:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2159:21:7"
            },
            "payable": true,
            "returnParameters": {
              "id": 2542,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2246:0:7"
            },
            "scope": 2984,
            "src": "2133:1068:7",
            "stateMutability": "payable",
            "superFunction": 659,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2660,
              "nodeType": "Block",
              "src": "3391:1214:7",
              "statements": [
                {
                  "assignments": [
                    2597
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2597,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2661,
                      "src": "3442:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2596,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "3442:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2601,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2598,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "3486:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2600,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2599,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2586,
                      "src": "3513:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3486:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3442:83:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3539:17:7",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2602,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2597,
                        "src": "3540:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      },
                      "id": 2603,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isActive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2489,
                      "src": "3540:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2607,
                  "nodeType": "IfStatement",
                  "src": "3535:54:7",
                  "trueBody": {
                    "id": 2606,
                    "nodeType": "Block",
                    "src": "3558:31:7",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 2595,
                        "id": 2605,
                        "nodeType": "Return",
                        "src": "3572:7:7"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2609
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2609,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2661,
                      "src": "3745:20:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2608,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3745:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2614,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2611,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "3785:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3785:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2610,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "3768:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 2613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3768:28:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3745:51:7"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2616,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 2661,
                      "src": "3807:31:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2615,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "3807:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2617,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3807:31:7"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2619,
                      "name": "finalServerKeyPublic",
                      "nodeType": "VariableDeclaration",
                      "scope": 2661,
                      "src": "3848:33:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2618,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3848:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2620,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3848:33:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2621,
                          "name": "responseSupport",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2616,
                          "src": "3892:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2622,
                          "name": "finalServerKeyPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2619,
                          "src": "3909:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 2623,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "3891:39:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2625,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2597,
                          "src": "3979:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2626,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2609,
                          "src": "4000:14:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2627,
                          "name": "serverKeyPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2588,
                          "src": "4028:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2628,
                          "name": "threshold",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2590,
                          "src": "4057:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 2624,
                        "name": "insertServerKeyRetrievalResponse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2949,
                        "src": "3933:32:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$_t_uint8_$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                          "typeString": "function (struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer,uint8,bytes memory,uint8) returns (enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                        }
                      },
                      "id": 2629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3933:134:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                      }
                    },
                    "src": "3891:176:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2631,
                  "nodeType": "ExpressionStatement",
                  "src": "3891:176:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2632,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2616,
                      "src": "4134:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2633,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "4153:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4153:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "4134:46:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2638,
                  "nodeType": "IfStatement",
                  "src": "4130:106:7",
                  "trueBody": {
                    "id": 2637,
                    "nodeType": "Block",
                    "src": "4182:54:7",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 2595,
                        "id": 2636,
                        "nodeType": "Return",
                        "src": "4219:7:7"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2640,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2586,
                        "src": "4318:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2641,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2597,
                        "src": "4331:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 2639,
                      "name": "clearServerKeyRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2972,
                      "src": "4287:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 2642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4287:52:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2643,
                  "nodeType": "ExpressionStatement",
                  "src": "4287:52:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2644,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2616,
                      "src": "4353:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2645,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "4372:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2646,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Confirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4372:25:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "4353:44:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2658,
                    "nodeType": "Block",
                    "src": "4501:98:7",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2655,
                              "name": "serverKeyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2586,
                              "src": "4576:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2654,
                            "name": "ServerKeyRetrievalError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2510
                            ],
                            "referencedDeclaration": 2510,
                            "src": "4552:23:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4552:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2657,
                        "nodeType": "EmitStatement",
                        "src": "4547:41:7"
                      }
                    ]
                  },
                  "id": 2659,
                  "nodeType": "IfStatement",
                  "src": "4349:250:7",
                  "trueBody": {
                    "id": 2653,
                    "nodeType": "Block",
                    "src": "4399:96:7",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2649,
                              "name": "serverKeyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2586,
                              "src": "4450:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2650,
                              "name": "finalServerKeyPublic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2619,
                              "src": "4463:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2648,
                            "name": "ServerKeyRetrieved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2506,
                              650
                            ],
                            "referencedDeclaration": 2506,
                            "src": "4431:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory)"
                            }
                          },
                          "id": 2651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4431:53:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2652,
                        "nodeType": "EmitStatement",
                        "src": "4426:58:7"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "Called when retrieval is reported by key server.",
            "id": 2661,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 2593,
                    "name": "serverKeyPublic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2588,
                    "src": "3374:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 2594,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2592,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "3362:11:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3362:28:7"
              }
            ],
            "name": "serverKeyRetrieved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2586,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2661,
                  "src": "3292:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2585,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3292:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2588,
                  "name": "serverKeyPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2661,
                  "src": "3313:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2587,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3313:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2590,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 2661,
                  "src": "3336:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2589,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3336:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3291:61:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2595,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3391:0:7"
            },
            "scope": 2984,
            "src": "3264:1341:7",
            "stateMutability": "nonpayable",
            "superFunction": 673,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2725,
              "nodeType": "Block",
              "src": "4736:1133:7",
              "statements": [
                {
                  "assignments": [
                    2667
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2667,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "4787:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2666,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "4787:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2671,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2668,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "4831:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2670,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2669,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2663,
                      "src": "4858:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4831:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4787:83:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "4884:17:7",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2672,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2667,
                        "src": "4885:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      },
                      "id": 2673,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isActive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2489,
                      "src": "4885:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2677,
                  "nodeType": "IfStatement",
                  "src": "4880:54:7",
                  "trueBody": {
                    "id": 2676,
                    "nodeType": "Block",
                    "src": "4903:31:7",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 2665,
                        "id": 2675,
                        "nodeType": "Return",
                        "src": "4917:7:7"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2679
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2679,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "4993:20:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2678,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "4993:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2684,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2681,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "5033:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2682,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5033:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2680,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "5016:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 2683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5016:28:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4993:51:7"
                },
                {
                  "assignments": [
                    2686
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2686,
                      "name": "invalidPublic",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "5307:26:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2685,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5307:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2691,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "3634",
                        "id": 2689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5346:2:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_64_by_1",
                          "typeString": "int_const 64"
                        },
                        "value": "64"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_64_by_1",
                          "typeString": "int_const 64"
                        }
                      ],
                      "id": 2688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5336:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 2687,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5340:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 2690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5336:13:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5307:42:7"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2693,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "5360:31:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2692,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "5360:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2694,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5360:31:7"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2696,
                      "name": "_finalServerKeyPublic",
                      "nodeType": "VariableDeclaration",
                      "scope": 2726,
                      "src": "5401:34:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2695,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5401:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2697,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5401:34:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 2698,
                          "name": "responseSupport",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2693,
                          "src": "5446:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                            "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2699,
                          "name": "_finalServerKeyPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2696,
                          "src": "5463:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 2700,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5445:40:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2702,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2667,
                          "src": "5534:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2703,
                          "name": "keyServerIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2679,
                          "src": "5555:14:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2704,
                          "name": "invalidPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2686,
                          "src": "5583:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30784646",
                          "id": 2705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5610:4:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_255_by_1",
                            "typeString": "int_const 255"
                          },
                          "value": "0xFF"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_rational_255_by_1",
                            "typeString": "int_const 255"
                          }
                        ],
                        "id": 2701,
                        "name": "insertServerKeyRetrievalResponse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2949,
                        "src": "5488:32:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$_t_uint8_$_t_bytes_memory_ptr_$_t_uint8_$returns$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                          "typeString": "function (struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer,uint8,bytes memory,uint8) returns (enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                        }
                      },
                      "id": 2706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5488:127:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                      }
                    },
                    "src": "5445:170:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2708,
                  "nodeType": "ExpressionStatement",
                  "src": "5445:170:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2709,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2693,
                      "src": "5629:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2710,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "5648:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5648:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "5629:46:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2715,
                  "nodeType": "IfStatement",
                  "src": "5625:83:7",
                  "trueBody": {
                    "id": 2714,
                    "nodeType": "Block",
                    "src": "5677:31:7",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 2665,
                        "id": 2713,
                        "nodeType": "Return",
                        "src": "5691:7:7"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2717,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2663,
                        "src": "5790:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2718,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2667,
                        "src": "5803:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 2716,
                      "name": "clearServerKeyRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2972,
                      "src": "5759:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5759:52:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2720,
                  "nodeType": "ExpressionStatement",
                  "src": "5759:52:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2722,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2663,
                        "src": "5850:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2721,
                      "name": "ServerKeyRetrievalError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2510
                      ],
                      "referencedDeclaration": 2510,
                      "src": "5826:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5826:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2724,
                  "nodeType": "EmitStatement",
                  "src": "5821:41:7"
                }
              ]
            },
            "documentation": "Called when error occurs during server key retrieval.",
            "id": 2726,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "serverKeyRetrievalError",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2663,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2726,
                  "src": "4706:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4706:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4705:21:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2665,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4736:0:7"
            },
            "scope": 2984,
            "src": "4673:1196:7",
            "stateMutability": "nonpayable",
            "superFunction": 678,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2734,
              "nodeType": "Block",
              "src": "6010:61:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2731,
                      "name": "serverKeyRetrievalRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2983,
                      "src": "6027:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 2732,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "6027:37:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2730,
                  "id": 2733,
                  "nodeType": "Return",
                  "src": "6020:44:7"
                }
              ]
            },
            "documentation": "Get count of pending server key retrieval requests.",
            "id": 2735,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "serverKeyRetrievalRequestsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5975:2:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2729,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2735,
                  "src": "6001:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6001:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6000:9:7"
            },
            "scope": 2984,
            "src": "5935:136:7",
            "stateMutability": "view",
            "superFunction": 683,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2751,
              "nodeType": "Block",
              "src": "6252:129:7",
              "statements": [
                {
                  "assignments": [
                    2743
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2743,
                      "name": "serverKeyId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2752,
                      "src": "6262:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2742,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6262:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2747,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2744,
                      "name": "serverKeyRetrievalRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2983,
                      "src": "6284:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 2746,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2745,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2737,
                      "src": "6315:5:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6284:37:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6262:59:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2748,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2743,
                        "src": "6352:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      null
                    ],
                    "id": 2749,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6338:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$",
                      "typeString": "tuple(bytes32)"
                    }
                  },
                  "functionReturnParameters": 2741,
                  "id": 2750,
                  "nodeType": "Return",
                  "src": "6331:43:7"
                }
              ]
            },
            "documentation": "Get server key retrieval request with given index.\n Returns: (serverKeyId)",
            "id": 2752,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getServerKeyRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2738,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2737,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2752,
                  "src": "6205:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2736,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6205:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6204:15:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2740,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2752,
                  "src": "6243:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2739,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6243:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6242:9:7"
            },
            "scope": 2984,
            "src": "6167:214:7",
            "stateMutability": "view",
            "superFunction": 690,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2779,
              "nodeType": "Block",
              "src": "6568:239:7",
              "statements": [
                {
                  "assignments": [
                    2762
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2762,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2780,
                      "src": "6578:20:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2761,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6578:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2766,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2764,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2756,
                        "src": "6618:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2763,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "6601:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 2765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6601:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6578:50:7"
                },
                {
                  "assignments": [
                    2768
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2768,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2780,
                      "src": "6638:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2767,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "6638:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2772,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2769,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "6682:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2771,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2770,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2754,
                      "src": "6709:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6682:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6638:83:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2774,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2768,
                          "src": "6757:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        "id": 2775,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "thresholdResponses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2491,
                        "src": "6757:26:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2776,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2762,
                        "src": "6785:14:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 2773,
                      "name": "isResponseRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3224,
                      "src": "6738:18:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$returns$_t_bool_$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8) view returns (bool)"
                      }
                    },
                    "id": 2777,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6738:62:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2760,
                  "id": 2778,
                  "nodeType": "Return",
                  "src": "6731:69:7"
                }
              ]
            },
            "documentation": "Returs true if response from given keyServer is required.",
            "id": 2780,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isServerKeyRetrievalResponseRequired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2754,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2780,
                  "src": "6499:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2753,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6499:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2756,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2780,
                  "src": "6520:17:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6520:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6498:40:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2760,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2759,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2780,
                  "src": "6562:4:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2758,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6562:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6561:6:7"
            },
            "scope": 2984,
            "src": "6453:354:7",
            "stateMutability": "view",
            "superFunction": 699,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2791,
              "nodeType": "Block",
              "src": "6977:47:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2789,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2787,
                      "name": "serverKeyRetrievalFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2974,
                      "src": "6987:21:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2788,
                      "name": "newFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2782,
                      "src": "7011:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6987:30:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2790,
                  "nodeType": "ExpressionStatement",
                  "src": "6987:30:7"
                }
              ]
            },
            "documentation": "Set server key retrieval fee.",
            "id": 2792,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2785,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2784,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "6963:9:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6963:9:7"
              }
            ],
            "name": "setServerKeyRetrievalFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2782,
                  "name": "newFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 2792,
                  "src": "6924:14:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2781,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6924:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6923:16:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2786,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6977:0:7"
            },
            "scope": 2984,
            "src": "6890:134:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2803,
              "nodeType": "Block",
              "src": "7176:57:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2799,
                      "name": "maxServerKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2976,
                      "src": "7186:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2800,
                      "name": "newLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2794,
                      "src": "7218:8:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7186:40:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2802,
                  "nodeType": "ExpressionStatement",
                  "src": "7186:40:7"
                }
              ]
            },
            "documentation": "Set server key retrieval requests limit.",
            "id": 2804,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2797,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2796,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "7162:9:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7162:9:7"
              }
            ],
            "name": "setMaxServerKeyRetrievalRequests",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2794,
                  "name": "newLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2804,
                  "src": "7121:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2793,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7121:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7120:18:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2798,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7176:0:7"
            },
            "scope": 2984,
            "src": "7079:154:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2826,
              "nodeType": "Block",
              "src": "7383:214:7",
              "statements": [
                {
                  "assignments": [
                    2812
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2812,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2827,
                      "src": "7393:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2811,
                        "name": "ServerKeyRetrievalRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2496,
                        "src": "7393:25:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2816,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2813,
                      "name": "serverKeyRetrievalRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2980,
                      "src": "7437:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                      }
                    },
                    "id": 2815,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2814,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2806,
                      "src": "7464:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7437:39:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7393:83:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2818,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2806,
                        "src": "7517:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2819,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2812,
                        "src": "7530:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                          "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                        }
                      ],
                      "id": 2817,
                      "name": "clearServerKeyRetrievalRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2972,
                      "src": "7486:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer)"
                      }
                    },
                    "id": 2820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7486:52:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2821,
                  "nodeType": "ExpressionStatement",
                  "src": "7486:52:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2823,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2806,
                        "src": "7578:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2822,
                      "name": "ServerKeyRetrievalError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2510
                      ],
                      "referencedDeclaration": 2510,
                      "src": "7554:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7554:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2825,
                  "nodeType": "EmitStatement",
                  "src": "7549:41:7"
                }
              ]
            },
            "documentation": "Delete server key retrieval request.",
            "id": 2827,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2809,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2808,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "7369:9:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7369:9:7"
              }
            ],
            "name": "deleteServerKeyRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2806,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2827,
                  "src": "7325:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2805,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7325:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7324:21:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2810,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7383:0:7"
            },
            "scope": 2984,
            "src": "7284:313:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2948,
              "nodeType": "Block",
              "src": "7912:1766:7",
              "statements": [
                {
                  "assignments": [
                    2843
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2843,
                      "name": "thresholdResponse",
                      "nodeType": "VariableDeclaration",
                      "scope": 2949,
                      "src": "7959:25:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2842,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7959:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2847,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2845,
                        "name": "threshold",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2835,
                        "src": "7995:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 2844,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7987:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": "bytes32"
                    },
                    "id": 2846,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7987:18:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7959:46:7"
                },
                {
                  "assignments": [
                    2849
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2849,
                      "name": "thresholdResponseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 2949,
                      "src": "8015:40:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2848,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "8015:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2860,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2851,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2829,
                          "src": "8086:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        "id": 2852,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "thresholdResponses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2491,
                        "src": "8086:26:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2853,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2831,
                        "src": "8126:14:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 2857,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2854,
                            "name": "keyServersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "8154:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                              "typeString": "function () view returns (uint8)"
                            }
                          },
                          "id": 2855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8154:17:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 2856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8174:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "8154:21:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2858,
                        "name": "thresholdResponse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2843,
                        "src": "8189:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2850,
                      "name": "insertResponse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3378,
                      "src": "8058:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$_t_uint8_$_t_bytes32_$returns$_t_enum$_ResponseSupport_$2994_$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8,uint8,bytes32) returns (enum SecretStoreServiceBase.ResponseSupport)"
                      }
                    },
                    "id": 2859,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8058:149:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8015:192:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2861,
                      "name": "thresholdResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2849,
                      "src": "8221:24:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2862,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "8249:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2863,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Impossible",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8249:26:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "8221:54:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2870,
                  "nodeType": "IfStatement",
                  "src": "8217:135:7",
                  "trueBody": {
                    "id": 2869,
                    "nodeType": "Block",
                    "src": "8277:75:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2865,
                              "name": "thresholdResponseSupport",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2849,
                              "src": "8299:24:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2866,
                              "name": "serverKeyPublic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2833,
                              "src": "8325:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 2867,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8298:43:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 2841,
                        "id": 2868,
                        "nodeType": "Return",
                        "src": "8291:50:7"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2872
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2872,
                      "name": "response",
                      "nodeType": "VariableDeclaration",
                      "scope": 2949,
                      "src": "8396:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2871,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8396:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2880,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2876,
                            "name": "serverKeyPublic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2833,
                            "src": "8442:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2877,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2835,
                            "src": "8459:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2874,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4825,
                            "src": "8425:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8425:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8425:44:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2873,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4832,
                      "src": "8415:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 2879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8415:55:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8396:74:7"
                },
                {
                  "assignments": [
                    2882
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2882,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 2949,
                      "src": "8480:31:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2881,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "8480:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2890,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2884,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2829,
                          "src": "8542:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        "id": 2885,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2493,
                        "src": "8542:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2886,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2831,
                        "src": "8573:14:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2887,
                        "name": "threshold",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2835,
                        "src": "8601:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2888,
                        "name": "response",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2872,
                        "src": "8624:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2883,
                      "name": "insertResponse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3378,
                      "src": "8514:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$_t_uint8_$_t_uint8_$_t_bytes32_$returns$_t_enum$_ResponseSupport_$2994_$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer,uint8,uint8,bytes32) returns (enum SecretStoreServiceBase.ResponseSupport)"
                      }
                    },
                    "id": 2889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8514:119:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8480:153:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2894,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2891,
                      "name": "thresholdResponseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2849,
                      "src": "8647:24:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2892,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "8675:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2893,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8675:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "8647:55:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2922,
                  "nodeType": "IfStatement",
                  "src": "8643:573:7",
                  "trueBody": {
                    "id": 2921,
                    "nodeType": "Block",
                    "src": "8704:512:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2895,
                              "name": "threshold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2835,
                              "src": "8852:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30784646",
                              "id": 2896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8865:4:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_255_by_1",
                                "typeString": "int_const 255"
                              },
                              "value": "0xFF"
                            },
                            "src": "8852:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2898,
                                  "name": "request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2829,
                                  "src": "8873:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                    "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                  }
                                },
                                "id": 2899,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "responses",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2493,
                                "src": "8873:17:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                  "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                                }
                              },
                              "id": 2900,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maxResponseSupport",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3006,
                              "src": "8873:36:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2901,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2829,
                                    "src": "8913:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                    }
                                  },
                                  "id": 2902,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "responses",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2493,
                                  "src": "8913:17:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                    "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                                  }
                                },
                                "id": 2903,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "responsesSupport",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3004,
                                "src": "8913:34:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$",
                                  "typeString": "mapping(bytes32 => uint8)"
                                }
                              },
                              "id": 2905,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2904,
                                "name": "response",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2872,
                                "src": "8948:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8913:44:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "8873:84:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8852:105:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2915,
                        "nodeType": "IfStatement",
                        "src": "8848:192:7",
                        "trueBody": {
                          "id": 2914,
                          "nodeType": "Block",
                          "src": "8959:81:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2908,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2829,
                                    "src": "8977:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                    }
                                  },
                                  "id": 2910,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "publicWithMaxThreshold",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2495,
                                  "src": "8977:30:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2911,
                                  "name": "serverKeyPublic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2833,
                                  "src": "9010:15:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "8977:48:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 2913,
                              "nodeType": "ExpressionStatement",
                              "src": "8977:48:7"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2916,
                                "name": "ResponseSupport",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2994,
                                "src": "9160:15:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                                  "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                                }
                              },
                              "id": 2917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Unconfirmed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9160:27:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2918,
                              "name": "serverKeyPublic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2833,
                              "src": "9189:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 2919,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9159:46:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 2841,
                        "id": 2920,
                        "nodeType": "Return",
                        "src": "9152:53:7"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 2926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2923,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2882,
                      "src": "9229:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2924,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "9248:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 2925,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9248:27:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "9229:46:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2943,
                  "nodeType": "IfStatement",
                  "src": "9225:395:7",
                  "trueBody": {
                    "id": 2942,
                    "nodeType": "Block",
                    "src": "9277:343:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 2933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2927,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2829,
                                "src": "9456:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                  "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                }
                              },
                              "id": 2928,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "responses",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2493,
                              "src": "9456:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                                "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                              }
                            },
                            "id": 2929,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "maxResponseSupport",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3006,
                            "src": "9456:36:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 2932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2930,
                              "name": "threshold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2835,
                              "src": "9496:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 2931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9508:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "9496:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "9456:53:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2941,
                        "nodeType": "IfStatement",
                        "src": "9452:158:7",
                        "trueBody": {
                          "id": 2940,
                          "nodeType": "Block",
                          "src": "9511:99:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2934,
                                      "name": "ResponseSupport",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2994,
                                      "src": "9537:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                                        "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                                      }
                                    },
                                    "id": 2935,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Confirmed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "9537:25:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2936,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2829,
                                      "src": "9564:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                                      }
                                    },
                                    "id": 2937,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "publicWithMaxThreshold",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2495,
                                    "src": "9564:30:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  }
                                ],
                                "id": 2938,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9536:59:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_storage_$",
                                  "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes storage ref)"
                                }
                              },
                              "functionReturnParameters": 2841,
                              "id": 2939,
                              "nodeType": "Return",
                              "src": "9529:66:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 2944,
                        "name": "responseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2882,
                        "src": "9638:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2945,
                        "name": "serverKeyPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2833,
                        "src": "9655:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "id": 2946,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "9637:34:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_ResponseSupport_$2994_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(enum SecretStoreServiceBase.ResponseSupport,bytes memory)"
                    }
                  },
                  "functionReturnParameters": 2841,
                  "id": 2947,
                  "nodeType": "Return",
                  "src": "9630:41:7"
                }
              ]
            },
            "documentation": "Insert both threshold and public response.",
            "id": 2949,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "insertServerKeyRetrievalResponse",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2836,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2829,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7738:41:7",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                    "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2828,
                    "name": "ServerKeyRetrievalRequest",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2496,
                    "src": "7738:25:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2831,
                  "name": "keyServerIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7789:20:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2830,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "7789:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2833,
                  "name": "serverKeyPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7819:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2832,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7819:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2835,
                  "name": "threshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7850:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2834,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "7850:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7728:138:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2838,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7884:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                    "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2837,
                    "name": "ResponseSupport",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2994,
                    "src": "7884:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2840,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2949,
                  "src": "7901:5:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2839,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7901:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7883:24:7"
            },
            "scope": 2984,
            "src": "7687:1991:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 2971,
              "nodeType": "Block",
              "src": "9847:178:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2957,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2953,
                          "src": "9872:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                            "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage pointer"
                          }
                        },
                        "id": 2958,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2493,
                        "src": "9872:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      ],
                      "id": 2956,
                      "name": "clearResponses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "9857:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$returns$__$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer)"
                      }
                    },
                    "id": 2959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9857:33:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2960,
                  "nodeType": "ExpressionStatement",
                  "src": "9857:33:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "9900:46:7",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2961,
                        "name": "serverKeyRetrievalRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2980,
                        "src": "9907:26:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                          "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref)"
                        }
                      },
                      "id": 2963,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2962,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2951,
                        "src": "9934:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9907:39:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage",
                        "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2965,
                  "nodeType": "ExpressionStatement",
                  "src": "9900:46:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2967,
                        "name": "serverKeyRetrievalRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2983,
                        "src": "9974:30:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2968,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2951,
                        "src": "10006:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2966,
                      "name": "removeRequestKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3457,
                      "src": "9957:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 2969,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9957:61:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2970,
                  "nodeType": "ExpressionStatement",
                  "src": "9957:61:7"
                }
              ]
            },
            "documentation": "Clear server key retrieval request traces.",
            "id": 2972,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearServerKeyRetrievalRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2951,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2972,
                  "src": "9775:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2950,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9775:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2953,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 2972,
                  "src": "9796:41:7",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                    "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2952,
                    "name": "ServerKeyRetrievalRequest",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2496,
                    "src": "9796:25:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                      "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9774:64:7"
            },
            "payable": false,
            "returnParameters": {
              "id": 2955,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9847:0:7"
            },
            "scope": 2984,
            "src": "9735:290:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2974,
            "name": "serverKeyRetrievalFee",
            "nodeType": "VariableDeclaration",
            "scope": 2984,
            "src": "10065:36:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2973,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "10065:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2976,
            "name": "maxServerKeyRetrievalRequests",
            "nodeType": "VariableDeclaration",
            "scope": 2984,
            "src": "10253:44:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2975,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "10253:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2980,
            "name": "serverKeyRetrievalRequests",
            "nodeType": "VariableDeclaration",
            "scope": 2984,
            "src": "10340:81:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
              "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest)"
            },
            "typeName": {
              "id": 2979,
              "keyType": {
                "id": 2977,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "10349:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "10340:46:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ServerKeyRetrievalRequest_$2496_storage_$",
                "typeString": "mapping(bytes32 => struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2978,
                "name": "ServerKeyRetrievalRequest",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2496,
                "src": "10360:25:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ServerKeyRetrievalRequest_$2496_storage_ptr",
                  "typeString": "struct SecretStoreServerKeyRetrievalService.ServerKeyRetrievalRequest"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2983,
            "name": "serverKeyRetrievalRequestsKeys",
            "nodeType": "VariableDeclaration",
            "scope": 2984,
            "src": "10468:48:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 2981,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "10468:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 2982,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "10468:9:7",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          }
        ],
        "scope": 2985,
        "src": "888:9631:7"
      }
    ],
    "src": "700:9820:7"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2019-01-23T09:53:59.502Z"
}