{
  "contractName": "SecretStoreDocumentKeyStoreService",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "requireKeyServer",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxDocumentKeyStoreRequests",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "keyServersCount",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "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": "documentKeyStoreFee",
      "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"
        },
        {
          "indexed": false,
          "name": "author",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "commonPoint",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "encryptedPoint",
          "type": "bytes"
        }
      ],
      "name": "DocumentKeyStoreRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "DocumentKeyStored",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "DocumentKeyStoreError",
      "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": "commonPoint",
          "type": "bytes"
        },
        {
          "name": "encryptedPoint",
          "type": "bytes"
        }
      ],
      "name": "storeDocumentKey",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "documentKeyStored",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "documentKeyStoreError",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "documentKeyStoreRequestsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getDocumentKeyStoreRequest",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "",
          "type": "bytes"
        },
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        },
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "isDocumentKeyStoreResponseRequired",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newFee",
          "type": "uint256"
        }
      ],
      "name": "setDocumentKeyStoreFee",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newLimit",
          "type": "uint256"
        }
      ],
      "name": "setMaxDocumentKeyStoreRequests",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "serverKeyId",
          "type": "bytes32"
        }
      ],
      "name": "deleteDocumentKeyStoreRequest",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516020806115e9833981016040819052905160008054600160a060020a031916331780825591928392600160a060020a031691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360018054600160a060020a031916600160a060020a03929092169190911790555067016345785d8a0000600455600860055561153c806100ad6000396000f3006080604052600436106100e25763ffffffff60e060020a6000350416630fe7db4a81146101585780632b4f030a1461017d5780634bcdff5e146101b45780635aa8404c146101db578063663c87cd146101f0578063715018a61461020557806387f76b1a1461021a5780638a9a9a0f146102325780638b9749671461024a5780638ba9e398146102625780638da5cb5b1461029a5780638f32d59b146102cb5780639890220b146102e0578063a020846a146102f5578063c0332ca11461030a578063d413995b14610322578063f2fde38b1461033a578063fb2f439b1461035b575b6040805160e560020a62461bcd02815260206004820152602260248201527f446972656374207061796d656e747320617265206e6f7420737570706f72746560448201527f642e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61017b600480359060248035808201929081013591604435908101910135610479565b005b34801561018957600080fd5b5061019e600160a060020a03600435166107e7565b6040805160ff9092168252519081900360200190f35b3480156101c057600080fd5b506101c9610884565b60408051918252519081900360200190f35b3480156101e757600080fd5b5061019e61088a565b3480156101fc57600080fd5b506101c961091b565b34801561021157600080fd5b5061017b610921565b34801561022657600080fd5b5061017b60043561098b565b34801561023e57600080fd5b5061017b6004356109f3565b34801561025657600080fd5b5061017b600435610a9e565b34801561026e57600080fd5b50610286600435600160a060020a0360243516610ab6565b604080519115158252519081900360200190f35b3480156102a657600080fd5b506102af610aef565b60408051600160a060020a039092168252519081900360200190f35b3480156102d757600080fd5b50610286610afe565b3480156102ec57600080fd5b5061017b610b0f565b34801561030157600080fd5b506101c9610bb1565b34801561031657600080fd5b5061017b600435610bb7565b34801561032e57600080fd5b5061017b600435610be5565b34801561034657600080fd5b5061017b600160a060020a0360043516610bfd565b34801561036757600080fd5b50610373600435610c1c565b60405180856000191660001916815260200184600160a060020a0316600160a060020a031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156103da5781810151838201526020016103c2565b50505050905090810190601f1680156104075780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561043a578181015183820152602001610422565b50505050905090810190601f1680156104675780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b60006004548034101515156104d8576040805160e560020a62461bcd02815260206004820181905260248201527f5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e604482015290519081900360640190fd5b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451604014935061056392505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375050845160401493506105ee92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b6005546007541061066f576040805160e560020a62461bcd02815260206004820152602360248201527f4d6178696d756d206e756d626572206f6620726571756573747320726561636860448201527f65642e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008981526006602052604090208054909450600160a060020a0316156106e0576040805160e560020a62461bcd02815260206004820152601e60248201527f5265717565737420617574686f722061646472657373206973203078302e0000604482015290519081900360640190fd5b6106e8610d96565b835473ffffffffffffffffffffffffffffffffffffffff1916331784556107136001850189896113f6565b506107226002850187876113f6565b50600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801899055604080518a8152336020820181905260809282018381529282018a90527fadc87e5ceadda3a573403a1ad2d7e815d4482b89ea2034e49d188de6843ee43d928c928c918c918c918c91906060820160a083018787808284379091018481038352858152602001905085858082843760405192018290039a509098505050505050505050a1505050505050505050565b600154604080517f287fb40c000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163287fb40c9160248082019260209290919082900301818787803b15801561085257600080fd5b505af1158015610866573d6000803e3d6000fd5b505050506040513d602081101561087c57600080fd5b505192915050565b60055481565b600154604080517f5560c9650000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691635560c96591600480830192602092919082900301818787803b1580156108e957600080fd5b505af11580156108fd573d6000803e3d6000fd5b505050506040513d602081101561091357600080fd5b505190505b90565b60075490565b610929610afe565b151561093457600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60008181526006602052604090208054600160a060020a031615156109af576109ef565b6109b8336107e7565b506109c38282610f58565b60405182907f1accba7cc95d8cf1f4f927b53957972a0d92aa6f96636f1fd988dad93d263e9790600090a25b5050565b6000818152600660205260408120805490919081908190600160a060020a03161515610a1e57610a97565b610a27336107e7565b925060009150610a4660038501846001610a3f61088a565b0385610ff0565b90506001816002811115610a5657fe5b1415610a6157610a97565b610a6b8585610f58565b60405185907ff97081917a769be6d07eefdd63666c32b011f9dba0bb0eed6cf1b9c9b987461c90600090a25b5050505050565b610aa6610afe565b1515610ab157600080fd5b600455565b6000806000610ac4846107e7565b60008681526006602052604090209092509050610ae460038201836111b5565b92505b505092915050565b600054600160a060020a031690565b600054600160a060020a0316331490565b33600090815260026020526040902054801515610b76576040805160e560020a62461bcd02815260206004820152600d60248201527f42616c616e636520697320302e00000000000000000000000000000000000000604482015290519081900360640190fd5b336000818152600260205260408082208290555183156108fc0291849190818181858888f193505050501580156109ef573d6000803e3d6000fd5b60045481565b6000610bc1610afe565b1515610bcc57600080fd5b5060008181526006602052604090206109c38282610f58565b610bed610afe565b1515610bf857600080fd5b600555565b610c05610afe565b1515610c1057600080fd5b610c1981611264565b50565b600080606080600080600787815481101515610c3457fe5b6000918252602080832090910154808352600682526040928390208054600180830180548751601f60029483161561010002600019019092168490049182018890048802810188019098528088529498509296508795600160a060020a0390921694929390870192849190830182828015610cf05780601f10610cc557610100808354040283529160200191610cf0565b820191906000526020600020905b815481529060010190602001808311610cd357829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295975086945092508401905082828015610d7e5780601f10610d5357610100808354040283529160200191610d7e565b820191906000526020600020905b815481529060010190602001808311610d6157829003601f168201915b50505050509050955095509550955050509193509193565b600080600080600080610da761088a565b95503494508560ff1685811515610dba57fe5b049350600092505b6001860360ff168360ff161015610e9957600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff861660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505050506040513d6020811015610e6657600080fd5b5051600160a060020a03811660009081526002602052604090208054860190559484900394600193909301929150610dc2565b600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff6000198a011660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b158015610f0657600080fd5b505af1158015610f1a573d6000803e3d6000fd5b505050506040513d6020811015610f3057600080fd5b5051600160a060020a0316600090815260026020526040902080549095019094555050505050565b610f64816003016112e1565b6000828152600660205260408120805473ffffffffffffffffffffffffffffffffffffffff1916815590610f9b6001830182611474565b610fa9600283016000611474565b6000600383018181556004840182905560058401805460ff19908116909155600785018054909116905590610fe160088501826114b8565b505050506109ef600783611332565b6000806000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561104b57600080fd5b505af115801561105f573d6000803e3d6000fd5b505050506040513d602081101561107557600080fd5b505160028a015490945060ff161515611090578389556110a2565b885484146110a2576110a289856113ba565b600189015460ff891660020a93508316156110c057600194506111a9565b600086815260038a016020526040902080546001808c0180548717905560028c01805460ff8181168401811660ff19928316179092558454938216830191821693168317909355919350141561112b5760058901805460018101825560009182526020909120018690555b600489015460ff9081169083161061116b5760048901805460ff191660ff84811691909117909155600019830181169088161161116b57600094506111a9565b600289015460ff1661117b61088a565b60048b0154919003915060001960ff918216830101811690881611156111a457600294506111a9565b600194505b50505050949350505050565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050506040513d602081101561123757600080fd5b50518554909250821461124d5760019250610ae7565b5050506001919091015460ff90911660020a161590565b600160a060020a038116151561127957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005b60058201548110156109ef57816003016000836005018381548110151561130757fe5b600091825260208083209091015483528201929092526040019020805460ff191690556001016112e4565b60005b82548110156113b5578254829084908390811061134e57fe5b60009182526020909120015414156113ad5782548390600019810190811061137257fe5b9060005260206000200154838281548110151561138b57fe5b6000918252602090912001558254600019016113a784826114d6565b506113b5565b600101611335565b505050565b6113c3826112e1565b80825560006001830181905560028301805460ff1990811690915560048401805490911690556113b560058401826114d6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114375782800160ff19823516178555611464565b82800160010185558215611464579182015b82811115611464578235825591602001919060010190611449565b506114709291506114f6565b5090565b50805460018160011615610100020316600290046000825580601f1061149a5750610c19565b601f016020900490600052602060002090810190610c1991906114f6565b5080546000825590600052602060002090810190610c1991906114f6565b8154818355818111156113b5576000838152602090206113b59181019083015b61091891905b8082111561147057600081556001016114fc5600a165627a7a7230582039522cef30b53295f8e51d2fd0b97a9707f880590ffb1be8a13bee5078378ba40029",
  "deployedBytecode": "0x6080604052600436106100e25763ffffffff60e060020a6000350416630fe7db4a81146101585780632b4f030a1461017d5780634bcdff5e146101b45780635aa8404c146101db578063663c87cd146101f0578063715018a61461020557806387f76b1a1461021a5780638a9a9a0f146102325780638b9749671461024a5780638ba9e398146102625780638da5cb5b1461029a5780638f32d59b146102cb5780639890220b146102e0578063a020846a146102f5578063c0332ca11461030a578063d413995b14610322578063f2fde38b1461033a578063fb2f439b1461035b575b6040805160e560020a62461bcd02815260206004820152602260248201527f446972656374207061796d656e747320617265206e6f7420737570706f72746560448201527f642e000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61017b600480359060248035808201929081013591604435908101910135610479565b005b34801561018957600080fd5b5061019e600160a060020a03600435166107e7565b6040805160ff9092168252519081900360200190f35b3480156101c057600080fd5b506101c9610884565b60408051918252519081900360200190f35b3480156101e757600080fd5b5061019e61088a565b3480156101fc57600080fd5b506101c961091b565b34801561021157600080fd5b5061017b610921565b34801561022657600080fd5b5061017b60043561098b565b34801561023e57600080fd5b5061017b6004356109f3565b34801561025657600080fd5b5061017b600435610a9e565b34801561026e57600080fd5b50610286600435600160a060020a0360243516610ab6565b604080519115158252519081900360200190f35b3480156102a657600080fd5b506102af610aef565b60408051600160a060020a039092168252519081900360200190f35b3480156102d757600080fd5b50610286610afe565b3480156102ec57600080fd5b5061017b610b0f565b34801561030157600080fd5b506101c9610bb1565b34801561031657600080fd5b5061017b600435610bb7565b34801561032e57600080fd5b5061017b600435610be5565b34801561034657600080fd5b5061017b600160a060020a0360043516610bfd565b34801561036757600080fd5b50610373600435610c1c565b60405180856000191660001916815260200184600160a060020a0316600160a060020a031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156103da5781810151838201526020016103c2565b50505050905090810190601f1680156104075780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561043a578181015183820152602001610422565b50505050905090810190601f1680156104675780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b60006004548034101515156104d8576040805160e560020a62461bcd02815260206004820181905260248201527f5472616e73616374696f6e2076616c7565206973206e6f7420656e6f7567682e604482015290519081900360640190fd5b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843750508451604014935061056392505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375050845160401493506105ee92505050576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b6005546007541061066f576040805160e560020a62461bcd02815260206004820152602360248201527f4d6178696d756d206e756d626572206f6620726571756573747320726561636860448201527f65642e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008981526006602052604090208054909450600160a060020a0316156106e0576040805160e560020a62461bcd02815260206004820152601e60248201527f5265717565737420617574686f722061646472657373206973203078302e0000604482015290519081900360640190fd5b6106e8610d96565b835473ffffffffffffffffffffffffffffffffffffffff1916331784556107136001850189896113f6565b506107226002850187876113f6565b50600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801899055604080518a8152336020820181905260809282018381529282018a90527fadc87e5ceadda3a573403a1ad2d7e815d4482b89ea2034e49d188de6843ee43d928c928c918c918c918c91906060820160a083018787808284379091018481038352858152602001905085858082843760405192018290039a509098505050505050505050a1505050505050505050565b600154604080517f287fb40c000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151600093929092169163287fb40c9160248082019260209290919082900301818787803b15801561085257600080fd5b505af1158015610866573d6000803e3d6000fd5b505050506040513d602081101561087c57600080fd5b505192915050565b60055481565b600154604080517f5560c9650000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691635560c96591600480830192602092919082900301818787803b1580156108e957600080fd5b505af11580156108fd573d6000803e3d6000fd5b505050506040513d602081101561091357600080fd5b505190505b90565b60075490565b610929610afe565b151561093457600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60008181526006602052604090208054600160a060020a031615156109af576109ef565b6109b8336107e7565b506109c38282610f58565b60405182907f1accba7cc95d8cf1f4f927b53957972a0d92aa6f96636f1fd988dad93d263e9790600090a25b5050565b6000818152600660205260408120805490919081908190600160a060020a03161515610a1e57610a97565b610a27336107e7565b925060009150610a4660038501846001610a3f61088a565b0385610ff0565b90506001816002811115610a5657fe5b1415610a6157610a97565b610a6b8585610f58565b60405185907ff97081917a769be6d07eefdd63666c32b011f9dba0bb0eed6cf1b9c9b987461c90600090a25b5050505050565b610aa6610afe565b1515610ab157600080fd5b600455565b6000806000610ac4846107e7565b60008681526006602052604090209092509050610ae460038201836111b5565b92505b505092915050565b600054600160a060020a031690565b600054600160a060020a0316331490565b33600090815260026020526040902054801515610b76576040805160e560020a62461bcd02815260206004820152600d60248201527f42616c616e636520697320302e00000000000000000000000000000000000000604482015290519081900360640190fd5b336000818152600260205260408082208290555183156108fc0291849190818181858888f193505050501580156109ef573d6000803e3d6000fd5b60045481565b6000610bc1610afe565b1515610bcc57600080fd5b5060008181526006602052604090206109c38282610f58565b610bed610afe565b1515610bf857600080fd5b600555565b610c05610afe565b1515610c1057600080fd5b610c1981611264565b50565b600080606080600080600787815481101515610c3457fe5b6000918252602080832090910154808352600682526040928390208054600180830180548751601f60029483161561010002600019019092168490049182018890048802810188019098528088529498509296508795600160a060020a0390921694929390870192849190830182828015610cf05780601f10610cc557610100808354040283529160200191610cf0565b820191906000526020600020905b815481529060010190602001808311610cd357829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295975086945092508401905082828015610d7e5780601f10610d5357610100808354040283529160200191610d7e565b820191906000526020600020905b815481529060010190602001808311610d6157829003601f168201915b50505050509050955095509550955050509193509193565b600080600080600080610da761088a565b95503494508560ff1685811515610dba57fe5b049350600092505b6001860360ff168360ff161015610e9957600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff861660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505050506040513d6020811015610e6657600080fd5b5051600160a060020a03811660009081526002602052604090208054860190559484900394600193909301929150610dc2565b600154604080517fc66198dc00000000000000000000000000000000000000000000000000000000815260ff6000198a011660048201529051600160a060020a039092169163c66198dc916024808201926020929091908290030181600087803b158015610f0657600080fd5b505af1158015610f1a573d6000803e3d6000fd5b505050506040513d6020811015610f3057600080fd5b5051600160a060020a0316600090815260026020526040902080549095019094555050505050565b610f64816003016112e1565b6000828152600660205260408120805473ffffffffffffffffffffffffffffffffffffffff1916815590610f9b6001830182611474565b610fa9600283016000611474565b6000600383018181556004840182905560058401805460ff19908116909155600785018054909116905590610fe160088501826114b8565b505050506109ef600783611332565b6000806000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561104b57600080fd5b505af115801561105f573d6000803e3d6000fd5b505050506040513d602081101561107557600080fd5b505160028a015490945060ff161515611090578389556110a2565b885484146110a2576110a289856113ba565b600189015460ff891660020a93508316156110c057600194506111a9565b600086815260038a016020526040902080546001808c0180548717905560028c01805460ff8181168401811660ff19928316179092558454938216830191821693168317909355919350141561112b5760058901805460018101825560009182526020909120018690555b600489015460ff9081169083161061116b5760048901805460ff191660ff84811691909117909155600019830181169088161161116b57600094506111a9565b600289015460ff1661117b61088a565b60048b0154919003915060001960ff918216830101811690881611156111a457600294506111a9565b600194505b50505050949350505050565b6000806000600160009054906101000a9004600160a060020a0316600160a060020a0316636452e8216040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050506040513d602081101561123757600080fd5b50518554909250821461124d5760019250610ae7565b5050506001919091015460ff90911660020a161590565b600160a060020a038116151561127957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005b60058201548110156109ef57816003016000836005018381548110151561130757fe5b600091825260208083209091015483528201929092526040019020805460ff191690556001016112e4565b60005b82548110156113b5578254829084908390811061134e57fe5b60009182526020909120015414156113ad5782548390600019810190811061137257fe5b9060005260206000200154838281548110151561138b57fe5b6000918252602090912001558254600019016113a784826114d6565b506113b5565b600101611335565b505050565b6113c3826112e1565b80825560006001830181905560028301805460ff1990811690915560048401805490911690556113b560058401826114d6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106114375782800160ff19823516178555611464565b82800160010185558215611464579182015b82811115611464578235825591602001919060010190611449565b506114709291506114f6565b5090565b50805460018160011615610100020316600290046000825580601f1061149a5750610c19565b601f016020900490600052602060002090810190610c1991906114f6565b5080546000825590600052602060002090810190610c1991906114f6565b8154818355818111156113b5576000838152602090206113b59181019083015b61091891905b8082111561147057600081556001016114fc5600a165627a7a7230582039522cef30b53295f8e51d2fd0b97a9707f880590ffb1be8a13bee5078378ba40029",
  "sourceMap": "853:6720:5:-;;;1597:190;8:9:-1;5:2;;;30:1;27;20:12;5:2;1597:190:5;;;;;;;;;;;;;;;;509:6:12;:19;;-1:-1:-1;;;;;;509:19:12;518:10;509:19;;;;1597:190:5;;;;-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;1729:10:5;1707:19;:32;1779:1;1749:27;:31;853:6720;;;-1:-1:-1;853:6720:5;;",
  "deployedSourceMap": "853:6720:5:-;;;;;;;;;-1:-1:-1;;;853:6720:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:44;;;-1:-1:-1;;;;;1906:44:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2102:913;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;7323:42:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7323:42:5;;;;;;;;;;;;;;;;;;;;2644:140:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2644:140:8;;;;4873:132:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4873:132:5;;;;1273:127:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1273:127:12;;;;4195:614:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4195:614:5;;;;;3074:1055;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3074:1055:5;;;;;6046:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6046:130:5;;;;;5626:339;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5626:339:5;;;-1:-1:-1;;;;;5626:339:5;;;;;;;;;;;;;;;;;;;;;;;639:70:12;;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;;;;7139:34:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7139:34:5;;;;6428:303;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6428:303:5;;;;;6229:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6229:150:5;;;;;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;;;;;5136:418:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5136:418:5;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5136:418:5;-1:-1:-1;;;;;5136:418:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5136:418:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5136:418:5;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5136:418:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2102:913;2499:39;2227:19;;2216:6:8;2203:9;:19;;2195:64;;;;;;;-1:-1:-1;;;;;2195:64:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2268:11:5;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;2301:14:5;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:27:5;;2383:28;:35;:65;2375:113;;;;;-1:-1:-1;;;;;2375:113:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2541:37;;;;:24;:37;;;;;2596:14;;2541:37;;-1:-1:-1;;;;;;2596:14:5;:28;2588:71;;;;;-1:-1:-1;;;;;2588:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;2669:9;:7;:9::i;:::-;2689:27;;-1:-1:-1;;2689:27:5;2706:10;2689:27;;;2726:33;2689:27;2726:19;;2748:11;;2726:33;:::i;:::-;-1:-1:-1;2769:39:5;:22;;;2794:14;;2769:39;:::i;:::-;-1:-1:-1;2818:28:5;27:10:-1;;39:1;23:18;;45:23;;-1:-1;2818:46:5;;;;;;;;;2880:128;;;;;;2944:10;2818:46;2880:128;;;;;;;;;;;;;;;;;;;;2852:11;;2968;;;;2993:14;;;;2880:128;;;;;;;2968:11;;;;2880:128;;;;;;;;;;;;;;;;-1:-1:-1;2880:128:5;;;;;;;;;;;;;;-1:-1:-1;2880:128:5;;-1:-1:-1;;;;;;;;;2880:128:5;2449:1:8;2269;2102:913:5;;;;;;;:::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;7323:42:5:-;;;;:::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;4873:132:5:-;4963:28;:35;4873:132;:::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;4195:614:5:-;4307:39;4349:37;;;:24;:37;;;;;4400:14;;-1:-1:-1;;;;;4400:14:5;:28;4396:65;;;4444:7;;4396:65;4520:28;4537:10;4520:16;:28::i;:::-;;4703:50;4732:11;4745:7;4703:28;:50::i;:::-;4768:34;;4790:11;;4768:34;;;;;4195:614;;;:::o;3074:1055::-;3182:39;3224:37;;;:24;:37;;;;;3275:14;;3224:37;;3182:39;;;;;-1:-1:-1;;;;;3275:14:5;:28;3271:65;;;3319:7;;3271:65;3452:28;3469:10;3452:16;:28::i;:::-;3429:51;-1:-1:-1;3517:1:5;;-1:-1:-1;3563:131:5;3591:17;;;3429:51;3509:10;3650:17;:15;:17::i;:::-;:21;3685:8;3563:14;:131::i;:::-;3529:165;-1:-1:-1;3780:27:5;3761:15;:46;;;;;;;;;3757:106;;;3846:7;;3757:106;4027:50;4056:11;4069:7;4027:28;:50::i;:::-;4092:30;;4110:11;;4092:30;;;;;3074:1055;;;;;;:::o;6046:130::-;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;6141:19:5;:28;6046:130::o;5626:339::-;5733:4;5749:20;5809:39;5772:27;5789:9;5772:16;:27::i;:::-;5851:37;;;;:24;:37;;;;;5749:50;;-1:-1:-1;5851:37:5;-1:-1:-1;5905:53:5;5924:17;;;5749:50;5905:18;:53::i;:::-;5898:60;;5626:339;;;;;;;:::o;639:70:12:-;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;7139:34:5;;;;:::o;6428:303::-;6535:39;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;-1:-1:-1;6577:37:5;;;;:24;:37;;;;;6624:50;6602:11;6577:37;6624:28;:50::i;6229:150::-;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;6334:27:5;:38;6229:150::o;1561:101:12:-;824:9;:7;:9::i;:::-;816:18;;;;;;;;1629:28;1648:8;1629:18;:28::i;:::-;1561:101;:::o;5136:418:5:-;5210:7;5219;5228:5;5235;5252:19;5319:39;5274:28;5303:5;5274:35;;;;;;;;;;;;;;;;;;;;;;5361:37;;;:24;:37;;;;;;;5454:14;;;5482:19;;;5408:139;;;;;5515:22;5408:139;;;;5454:14;5408:139;-1:-1:-1;;5408:139:5;;;;;;;;;;;;;;;;;;;;;;;;;5274:35;;-1:-1:-1;5361:37:5;;-1:-1:-1;5274:35:5;;-1:-1:-1;;;;;5454:14:5;;;;5482:19;;5515:22;;;;5482:19;;5408:139;;;5482:19;5408:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5408:139:5;;;;;;;;;;;;;-1:-1:-1;;5408:139:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5408:139:5;;-1:-1:-1;5408:139:5;-1:-1:-1;5408:139:5;;;-1:-1:-1;5408:139:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5136:418;;;;;;;:::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;6819:282:5:-;6937:33;6952:7;:17;;6937:14;:33::i;:::-;6987:37;;;;:24;:37;;;;;6980:44;;-1:-1:-1;;6980:44:5;;;6987:37;6980:44;;;;6987:37;6980:44;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6980:44:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;7035:59;7052:28;7082:11;7035:16;:59::i;4584:1938:8:-;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;3920:618::-;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;6568:224:8:-;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;853:6720:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;853:6720:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;853:6720:5;;;-1:-1:-1;853:6720:5;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "//! The Secret Store document key store 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.24;\n\nimport \"../interfaces/SecretStoreService.sol\";\nimport \"./SecretStoreServiceBase.sol\";\n\n\n/// Document Key store service contract.\ncontract SecretStoreDocumentKeyStoreService is SecretStoreServiceBase, DocumentKeyStoreServiceClientApi, DocumentKeyStoreServiceKeyServerApi {\n    /// Document key store request.\n    struct DocumentKeyStoreRequest {\n        address author;\n        bytes commonPoint;\n        bytes encryptedPoint;\n        RequestResponses responses;\n    }\n\n    /// When document key store request is received.\n    event DocumentKeyStoreRequested(bytes32 serverKeyId, address author, bytes commonPoint, bytes encryptedPoint);\n    /// When document key is stored.\n    event DocumentKeyStored(bytes32 indexed serverKeyId);\n    /// When error occurs during document key store.\n    event DocumentKeyStoreError(bytes32 indexed serverKeyId);\n\n    /// Constructor.\n    constructor(address keyServerSetAddressInit) SecretStoreServiceBase(keyServerSetAddressInit) public {\n        documentKeyStoreFee = 100 finney;\n        maxDocumentKeyStoreRequests = 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    /// Request document key store. Use `secretstore_generateDocumentKey` RPC to generate both\n    /// `commonPoint` and `encryptedPoint`.\n    function storeDocumentKey(bytes32 serverKeyId, bytes commonPoint, bytes encryptedPoint) external payable\n        whenFeePaid(documentKeyStoreFee)\n        validPublic(commonPoint)\n        validPublic(encryptedPoint)\n    {\n        // check maximum number of requests\n        require(documentKeyStoreRequestsKeys.length < maxDocumentKeyStoreRequests, \"Maximum number of requests reached.\");\n\n        DocumentKeyStoreRequest storage request = documentKeyStoreRequests[serverKeyId];\n        require(request.author == address(0), \"Request author address is 0x0.\");\n        deposit();\n\n        request.author = msg.sender;\n        request.commonPoint = commonPoint;\n        request.encryptedPoint = encryptedPoint;\n        documentKeyStoreRequestsKeys.push(serverKeyId);\n\n        emit DocumentKeyStoreRequested(\n            serverKeyId,\n            msg.sender,\n            commonPoint,\n            encryptedPoint);\n    }\n\n    /// Called when store is reported by key server.\n    function documentKeyStored(bytes32 serverKeyId) external {\n        // check if request still active\n        DocumentKeyStoreRequest storage request = documentKeyStoreRequests[serverKeyId];\n        if (request.author == address(0)) {\n            return;\n        }\n\n        // insert response (we're waiting for responses from all authorities here)\n        uint8 keyServerIndex = requireKeyServer(msg.sender);\n        bytes32 response = bytes32(0);\n        ResponseSupport responseSupport = insertResponse(\n            request.responses,\n            keyServerIndex,\n            keyServersCount() - 1,\n            response);\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        // there's always consensus, because key servers are only reporting the fact that they've stored the key\n        clearDocumentKeyStoreRequest(serverKeyId, request);\n        emit DocumentKeyStored(serverKeyId);\n    }\n\n    /// Called when error occurs during document key store.\n    function documentKeyStoreError(bytes32 serverKeyId) external {\n        // check if request still active\n        DocumentKeyStoreRequest storage request = documentKeyStoreRequests[serverKeyId];\n        if (request.author == address(0)) {\n            return;\n        }\n\n        // check that it is called by key server\n        requireKeyServer(msg.sender);\n\n        // any error in key store is fatal, because we need all key servers to participate in store\n        // => delete request and fire event\n        clearDocumentKeyStoreRequest(serverKeyId, request);\n        emit DocumentKeyStoreError(serverKeyId);\n    }\n\n    /// Get count of pending document key store requests.\n    function documentKeyStoreRequestsCount() external view returns (uint256) {\n        return documentKeyStoreRequestsKeys.length;\n    }\n\n    /// Get document key store request with given index.\n    /// Returns: (serverKeyId, author, commonPoint, encryptedPoint)\n    function getDocumentKeyStoreRequest(uint256 index) external view returns (bytes32, address, bytes, bytes) {\n        bytes32 serverKeyId = documentKeyStoreRequestsKeys[index];\n        DocumentKeyStoreRequest storage request = documentKeyStoreRequests[serverKeyId];\n        return (\n            serverKeyId,\n            request.author,\n            request.commonPoint,\n            request.encryptedPoint\n        );\n    }\n\n    /// Returs true if response from given keyServer is required.\n    function isDocumentKeyStoreResponseRequired(bytes32 serverKeyId, address keyServer) external view returns (bool) {\n        uint8 keyServerIndex = requireKeyServer(keyServer);\n        DocumentKeyStoreRequest storage request = documentKeyStoreRequests[serverKeyId];\n        return isResponseRequired(request.responses, keyServerIndex);\n    }\n\n    // === Administrative methods ===\n\n    /// Set document key store fee.\n    function setDocumentKeyStoreFee(uint256 newFee)\n        public\n        onlyOwner\n    {\n        documentKeyStoreFee = newFee;\n    }\n\n    /// Set document key store requests limit.\n    function setMaxDocumentKeyStoreRequests(uint256 newLimit)\n        public\n        onlyOwner\n    {\n        maxDocumentKeyStoreRequests = newLimit;\n    }\n\n    /// Delete document key store request.\n    function deleteDocumentKeyStoreRequest(bytes32 serverKeyId)\n        public\n        onlyOwner\n    {\n        DocumentKeyStoreRequest storage request = documentKeyStoreRequests[serverKeyId];\n        clearDocumentKeyStoreRequest(serverKeyId, request);\n\n        emit DocumentKeyStoreError(serverKeyId);\n    }\n\n    // === Internal methods ===\n\n    /// Clear document key store request traces.\n    function clearDocumentKeyStoreRequest(bytes32 serverKeyId, DocumentKeyStoreRequest storage request) private {\n        clearResponses(request.responses);\n        delete documentKeyStoreRequests[serverKeyId];\n\n        removeRequestKey(documentKeyStoreRequestsKeys, serverKeyId);\n    }\n\n    /// Document key store fee.\n    uint256 public documentKeyStoreFee;\n    /// Maximal number of active document key store requests. We're limiting this number to avoid\n    /// infinite gas costs of some functions.\n    uint256 public maxDocumentKeyStoreRequests;\n\n    /// Pending store requests.\n    mapping (bytes32 => DocumentKeyStoreRequest) private documentKeyStoreRequests;\n    /// Pending store requests keys.\n    bytes32[] private documentKeyStoreRequestsKeys;\n}\n",
  "sourcePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreDocumentKeyStoreService.sol",
  "ast": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreDocumentKeyStoreService.sol",
    "exportedSymbols": {
      "SecretStoreDocumentKeyStoreService": [
        2078
      ]
    },
    "id": 2079,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1687,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "698:24:5"
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/SecretStoreService.sol",
        "file": "../interfaces/SecretStoreService.sol",
        "id": 1688,
        "nodeType": "ImportDirective",
        "scope": 2079,
        "sourceUnit": 872,
        "src": "724:46:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServiceBase.sol",
        "file": "./SecretStoreServiceBase.sol",
        "id": 1689,
        "nodeType": "ImportDirective",
        "scope": 2079,
        "sourceUnit": 3513,
        "src": "771:38:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1690,
              "name": "SecretStoreServiceBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3512,
              "src": "900:22:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SecretStoreServiceBase_$3512",
                "typeString": "contract SecretStoreServiceBase"
              }
            },
            "id": 1691,
            "nodeType": "InheritanceSpecifier",
            "src": "900:22:5"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1692,
              "name": "DocumentKeyStoreServiceClientApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 718,
              "src": "924:32:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentKeyStoreServiceClientApi_$718",
                "typeString": "contract DocumentKeyStoreServiceClientApi"
              }
            },
            "id": 1693,
            "nodeType": "InheritanceSpecifier",
            "src": "924:32:5"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1694,
              "name": "DocumentKeyStoreServiceKeyServerApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 766,
              "src": "958:35:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentKeyStoreServiceKeyServerApi_$766",
                "typeString": "contract DocumentKeyStoreServiceKeyServerApi"
              }
            },
            "id": 1695,
            "nodeType": "InheritanceSpecifier",
            "src": "958:35:5"
          }
        ],
        "contractDependencies": [
          718,
          766,
          3512,
          4823
        ],
        "contractKind": "contract",
        "documentation": "Document Key store service contract.",
        "fullyImplemented": true,
        "id": 2078,
        "linearizedBaseContracts": [
          2078,
          766,
          718,
          3512,
          4823
        ],
        "name": "SecretStoreDocumentKeyStoreService",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest",
            "id": 1704,
            "members": [
              {
                "constant": false,
                "id": 1697,
                "name": "author",
                "nodeType": "VariableDeclaration",
                "scope": 1704,
                "src": "1077:14:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1696,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1077:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1699,
                "name": "commonPoint",
                "nodeType": "VariableDeclaration",
                "scope": 1704,
                "src": "1101:17:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 1698,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1101:5:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1701,
                "name": "encryptedPoint",
                "nodeType": "VariableDeclaration",
                "scope": 1704,
                "src": "1128:20:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 1700,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1128:5:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1703,
                "name": "responses",
                "nodeType": "VariableDeclaration",
                "scope": 1704,
                "src": "1158:26:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 1702,
                  "name": "RequestResponses",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3010,
                  "src": "1158:16:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "DocumentKeyStoreRequest",
            "nodeType": "StructDefinition",
            "scope": 2078,
            "src": "1036:155:5",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": "When document key store request is received.",
            "id": 1714,
            "name": "DocumentKeyStoreRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1706,
                  "indexed": false,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1714,
                  "src": "1282:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1705,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1282:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1708,
                  "indexed": false,
                  "name": "author",
                  "nodeType": "VariableDeclaration",
                  "scope": 1714,
                  "src": "1303:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1707,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1303:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1710,
                  "indexed": false,
                  "name": "commonPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1714,
                  "src": "1319:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1709,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1319:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1712,
                  "indexed": false,
                  "name": "encryptedPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1714,
                  "src": "1338:20:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1711,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1338:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1281:78:5"
            },
            "src": "1250:110:5"
          },
          {
            "anonymous": false,
            "documentation": "When document key is stored.",
            "id": 1718,
            "name": "DocumentKeyStored",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1716,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1718,
                  "src": "1426:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1715,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1426:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1425:29:5"
            },
            "src": "1402:53:5"
          },
          {
            "anonymous": false,
            "documentation": "When error occurs during document key store.",
            "id": 1722,
            "name": "DocumentKeyStoreError",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1721,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1720,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1722,
                  "src": "1541:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1719,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1541:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1540:29:5"
            },
            "src": "1513:57:5"
          },
          {
            "body": {
              "id": 1738,
              "nodeType": "Block",
              "src": "1697:90:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1732,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1730,
                      "name": "documentKeyStoreFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2068,
                      "src": "1707:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 1731,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1729:10:5",
                      "subdenomination": "finney",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100000000000000000_by_1",
                        "typeString": "int_const 100000000000000000"
                      },
                      "value": "100"
                    },
                    "src": "1707:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1733,
                  "nodeType": "ExpressionStatement",
                  "src": "1707:32:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1734,
                      "name": "maxDocumentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2070,
                      "src": "1749:27:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "38",
                      "id": 1735,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1779:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_8_by_1",
                        "typeString": "int_const 8"
                      },
                      "value": "8"
                    },
                    "src": "1749:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1737,
                  "nodeType": "ExpressionStatement",
                  "src": "1749:31:5"
                }
              ]
            },
            "documentation": "Constructor.",
            "id": 1739,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1727,
                    "name": "keyServerSetAddressInit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1724,
                    "src": "1665:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1728,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1726,
                  "name": "SecretStoreServiceBase",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3512,
                  "src": "1642:22:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SecretStoreServiceBase_$3512_$",
                    "typeString": "type(contract SecretStoreServiceBase)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1642:47:5"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1724,
                  "name": "keyServerSetAddressInit",
                  "nodeType": "VariableDeclaration",
                  "scope": 1739,
                  "src": "1609:31:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1723,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1609:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1608:33:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1729,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1697:0:5"
            },
            "scope": 2078,
            "src": "1597:190:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1746,
              "nodeType": "Block",
              "src": "1896:61:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "446972656374207061796d656e747320617265206e6f7420737570706f727465642e",
                        "id": 1743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1913:36:5",
                        "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": 1742,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4843,
                        4844
                      ],
                      "referencedDeclaration": 4844,
                      "src": "1906:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 1744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1906:44:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1745,
                  "nodeType": "ExpressionStatement",
                  "src": "1906:44:5"
                }
              ]
            },
            "documentation": "We do not support direct payments.",
            "id": 1747,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1740,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1878:2:5"
            },
            "payable": true,
            "returnParameters": {
              "id": 1741,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1896:0:5"
            },
            "scope": 2078,
            "src": "1870:87:5",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1825,
              "nodeType": "Block",
              "src": "2321:694:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1766,
                            "name": "documentKeyStoreRequestsKeys",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2077,
                            "src": "2383:28:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 1767,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2383:35:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1768,
                          "name": "maxDocumentKeyStoreRequests",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2070,
                          "src": "2421:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2383:65:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6178696d756d206e756d626572206f6620726571756573747320726561636865642e",
                        "id": 1770,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2450:37:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_435a8f6544441c7bce8ee9c56136c5fd617a069ed90f52583450a6d23a9f4b74",
                          "typeString": "literal_string \"Maximum number of requests reached.\""
                        },
                        "value": "Maximum number of requests reached."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_435a8f6544441c7bce8ee9c56136c5fd617a069ed90f52583450a6d23a9f4b74",
                          "typeString": "literal_string \"Maximum number of requests reached.\""
                        }
                      ],
                      "id": 1765,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2375:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2375:113:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1772,
                  "nodeType": "ExpressionStatement",
                  "src": "2375:113:5"
                },
                {
                  "assignments": [
                    1774
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1774,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1826,
                      "src": "2499:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1773,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "2499:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1778,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1775,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "2541:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1777,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1776,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1749,
                      "src": "2566:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2541:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2499:79:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1780,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1774,
                            "src": "2596:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                              "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                            }
                          },
                          "id": 1781,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "author",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1697,
                          "src": "2596:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2622:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 1782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2614:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 1784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2614:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2596:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5265717565737420617574686f722061646472657373206973203078302e",
                        "id": 1786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2626:32:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_991afaa2eab3937bf8e5dff96f3cab2a74c07cb028d912809f17bbfa6c92f14b",
                          "typeString": "literal_string \"Request author address is 0x0.\""
                        },
                        "value": "Request author address is 0x0."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_991afaa2eab3937bf8e5dff96f3cab2a74c07cb028d912809f17bbfa6c92f14b",
                          "typeString": "literal_string \"Request author address is 0x0.\""
                        }
                      ],
                      "id": 1779,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2588:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1787,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2588:71:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1788,
                  "nodeType": "ExpressionStatement",
                  "src": "2588:71:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 1789,
                      "name": "deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3180,
                      "src": "2669:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 1790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2669:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1791,
                  "nodeType": "ExpressionStatement",
                  "src": "2669:9:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1792,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "2689:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1794,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "author",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1697,
                      "src": "2689:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1795,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4838,
                        "src": "2706:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1796,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2706:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2689:27:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1798,
                  "nodeType": "ExpressionStatement",
                  "src": "2689:27:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1803,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1799,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "2726:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1801,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "commonPoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1699,
                      "src": "2726:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1802,
                      "name": "commonPoint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1751,
                      "src": "2748:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "2726:33:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 1804,
                  "nodeType": "ExpressionStatement",
                  "src": "2726:33:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1805,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "2769:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1807,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "encryptedPoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1701,
                      "src": "2769:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1808,
                      "name": "encryptedPoint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1753,
                      "src": "2794:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "2769:39:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 1810,
                  "nodeType": "ExpressionStatement",
                  "src": "2769:39:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1814,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1749,
                        "src": "2852:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1811,
                        "name": "documentKeyStoreRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2077,
                        "src": "2818:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 1813,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2818:33:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) returns (uint256)"
                      }
                    },
                    "id": 1815,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2818:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1816,
                  "nodeType": "ExpressionStatement",
                  "src": "2818:46:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1818,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1749,
                        "src": "2919:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1819,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "2944:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2944:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1821,
                        "name": "commonPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1751,
                        "src": "2968:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1822,
                        "name": "encryptedPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1753,
                        "src": "2993:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 1817,
                      "name": "DocumentKeyStoreRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1714
                      ],
                      "referencedDeclaration": 1714,
                      "src": "2880:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,address,bytes memory,bytes memory)"
                      }
                    },
                    "id": 1823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2880:128:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1824,
                  "nodeType": "EmitStatement",
                  "src": "2875:133:5"
                }
              ]
            },
            "documentation": "Request document key store. Use `secretstore_generateDocumentKey` RPC to generate both\n `commonPoint` and `encryptedPoint`.",
            "id": 1826,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1756,
                    "name": "documentKeyStoreFee",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2068,
                    "src": "2227:19:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 1757,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1755,
                  "name": "whenFeePaid",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3024,
                  "src": "2215:11:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2215:32:5"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1759,
                    "name": "commonPoint",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1751,
                    "src": "2268:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1760,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1758,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "2256:11:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2256:24:5"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1762,
                    "name": "encryptedPoint",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1753,
                    "src": "2301:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1763,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1761,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "2289:11:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2289:27:5"
              }
            ],
            "name": "storeDocumentKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1749,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1826,
                  "src": "2128:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1748,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2128:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1751,
                  "name": "commonPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1826,
                  "src": "2149:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1750,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2149:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1753,
                  "name": "encryptedPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1826,
                  "src": "2168:20:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1752,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2168:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2127:62:5"
            },
            "payable": true,
            "returnParameters": {
              "id": 1764,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2321:0:5"
            },
            "scope": 2078,
            "src": "2102:913:5",
            "stateMutability": "payable",
            "superFunction": 717,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1888,
              "nodeType": "Block",
              "src": "3131:998:5",
              "statements": [
                {
                  "assignments": [
                    1832
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1832,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1889,
                      "src": "3182:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1831,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "3182:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1836,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1833,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "3224:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1835,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1834,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1828,
                      "src": "3249:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3224:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3182:79:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1837,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1832,
                        "src": "3275:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1838,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "author",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1697,
                      "src": "3275:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3301:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3293:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3293:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3275:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1845,
                  "nodeType": "IfStatement",
                  "src": "3271:65:5",
                  "trueBody": {
                    "id": 1844,
                    "nodeType": "Block",
                    "src": "3305:31:5",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1830,
                        "id": 1843,
                        "nodeType": "Return",
                        "src": "3319:7:5"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1847
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1847,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1889,
                      "src": "3429:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1846,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3429:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1852,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1849,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "3469:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3469:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1848,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "3452:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3452:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3429:51:5"
                },
                {
                  "assignments": [
                    1854
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1854,
                      "name": "response",
                      "nodeType": "VariableDeclaration",
                      "scope": 1889,
                      "src": "3490:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1853,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3490:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1858,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3517:1:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 1855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3509:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": "bytes32"
                    },
                    "id": 1857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3509:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3490:29:5"
                },
                {
                  "assignments": [
                    1860
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1860,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 1889,
                      "src": "3529:31:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1859,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "3529:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1871,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1862,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1832,
                          "src": "3591:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1863,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1703,
                        "src": "3591:17:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1864,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1847,
                        "src": "3622:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 1868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1865,
                            "name": "keyServersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "3650:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                              "typeString": "function () view returns (uint8)"
                            }
                          },
                          "id": 1866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3650:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3670:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "3650:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1869,
                        "name": "response",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1854,
                        "src": "3685:8:5",
                        "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": 1861,
                      "name": "insertResponse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3378,
                      "src": "3563:14:5",
                      "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": 1870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3563:131:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3529:165:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 1875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1872,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1860,
                      "src": "3761:15:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1873,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "3780:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 1874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3780:27:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "3761:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1878,
                  "nodeType": "IfStatement",
                  "src": "3757:106:5",
                  "trueBody": {
                    "id": 1877,
                    "nodeType": "Block",
                    "src": "3809:54:5",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1830,
                        "id": 1876,
                        "nodeType": "Return",
                        "src": "3846:7:5"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1880,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1828,
                        "src": "4056:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1881,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1832,
                        "src": "4069:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      ],
                      "id": 1879,
                      "name": "clearDocumentKeyStoreRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2066,
                      "src": "4027:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer)"
                      }
                    },
                    "id": 1882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4027:50:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1883,
                  "nodeType": "ExpressionStatement",
                  "src": "4027:50:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1885,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1828,
                        "src": "4110:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1884,
                      "name": "DocumentKeyStored",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1718
                      ],
                      "referencedDeclaration": 1718,
                      "src": "4092:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4092:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1887,
                  "nodeType": "EmitStatement",
                  "src": "4087:35:5"
                }
              ]
            },
            "documentation": "Called when store is reported by key server.",
            "id": 1889,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "documentKeyStored",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1829,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1828,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1889,
                  "src": "3101:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1827,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3101:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3100:21:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1830,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3131:0:5"
            },
            "scope": 2078,
            "src": "3074:1055:5",
            "stateMutability": "nonpayable",
            "superFunction": 733,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1923,
              "nodeType": "Block",
              "src": "4256:553:5",
              "statements": [
                {
                  "assignments": [
                    1895
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1895,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1924,
                      "src": "4307:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1894,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "4307:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1899,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1896,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "4349:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1898,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1897,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1891,
                      "src": "4374:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4349:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4307:79:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1900,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1895,
                        "src": "4400:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1901,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "author",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1697,
                      "src": "4400:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4426:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4418:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1904,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4418:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4400:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1908,
                  "nodeType": "IfStatement",
                  "src": "4396:65:5",
                  "trueBody": {
                    "id": 1907,
                    "nodeType": "Block",
                    "src": "4430:31:5",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1893,
                        "id": 1906,
                        "nodeType": "Return",
                        "src": "4444:7:5"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1910,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "4537:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4537:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1909,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "4520:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4520:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 1913,
                  "nodeType": "ExpressionStatement",
                  "src": "4520:28:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1915,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1891,
                        "src": "4732:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1916,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1895,
                        "src": "4745:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      ],
                      "id": 1914,
                      "name": "clearDocumentKeyStoreRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2066,
                      "src": "4703:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer)"
                      }
                    },
                    "id": 1917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4703:50:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1918,
                  "nodeType": "ExpressionStatement",
                  "src": "4703:50:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1920,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1891,
                        "src": "4790:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1919,
                      "name": "DocumentKeyStoreError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1722
                      ],
                      "referencedDeclaration": 1722,
                      "src": "4768:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4768:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1922,
                  "nodeType": "EmitStatement",
                  "src": "4763:39:5"
                }
              ]
            },
            "documentation": "Called when error occurs during document key store.",
            "id": 1924,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "documentKeyStoreError",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1892,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1891,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1924,
                  "src": "4226:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1890,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4226:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4225:21:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1893,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4256:0:5"
            },
            "scope": 2078,
            "src": "4195:614:5",
            "stateMutability": "nonpayable",
            "superFunction": 738,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1932,
              "nodeType": "Block",
              "src": "4946:59:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1929,
                      "name": "documentKeyStoreRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2077,
                      "src": "4963:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1930,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4963:35:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1928,
                  "id": 1931,
                  "nodeType": "Return",
                  "src": "4956:42:5"
                }
              ]
            },
            "documentation": "Get count of pending document key store requests.",
            "id": 1933,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "documentKeyStoreRequestsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1925,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4911:2:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1928,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1927,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1933,
                  "src": "4937:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4937:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4936:9:5"
            },
            "scope": 2078,
            "src": "4873:132:5",
            "stateMutability": "view",
            "superFunction": 743,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1967,
              "nodeType": "Block",
              "src": "5242:312:5",
              "statements": [
                {
                  "assignments": [
                    1947
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1947,
                      "name": "serverKeyId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1968,
                      "src": "5252:19:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1946,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5252:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1951,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1948,
                      "name": "documentKeyStoreRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2077,
                      "src": "5274:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1950,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1949,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1935,
                      "src": "5303:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5274:35:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5252:57:5"
                },
                {
                  "assignments": [
                    1953
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1953,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1968,
                      "src": "5319:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1952,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "5319:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1957,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1954,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "5361:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1956,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1955,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1947,
                      "src": "5386:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5361:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5319:79:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 1958,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1947,
                        "src": "5429:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1959,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1953,
                          "src": "5454:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1960,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "author",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1697,
                        "src": "5454:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1961,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1953,
                          "src": "5482:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1962,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "commonPoint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1699,
                        "src": "5482:19:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1963,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1953,
                          "src": "5515:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1964,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "encryptedPoint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1701,
                        "src": "5515:22:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "id": 1965,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5415:132:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_address_$_t_bytes_storage_$_t_bytes_storage_$",
                      "typeString": "tuple(bytes32,address,bytes storage ref,bytes storage ref)"
                    }
                  },
                  "functionReturnParameters": 1945,
                  "id": 1966,
                  "nodeType": "Return",
                  "src": "5408:139:5"
                }
              ]
            },
            "documentation": "Get document key store request with given index.\n Returns: (serverKeyId, author, commonPoint, encryptedPoint)",
            "id": 1968,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getDocumentKeyStoreRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1935,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5172:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1934,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5172:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5171:15:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1938,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5210:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1937,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5210:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1940,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5219:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1939,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5219:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1942,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5228:5:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1941,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5228:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1944,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5235:5:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1943,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5235:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5209:32:5"
            },
            "scope": 2078,
            "src": "5136:418:5",
            "stateMutability": "view",
            "superFunction": 756,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1995,
              "nodeType": "Block",
              "src": "5739:226:5",
              "statements": [
                {
                  "assignments": [
                    1978
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1978,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1996,
                      "src": "5749:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1977,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5749:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1982,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1980,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1972,
                        "src": "5789:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1979,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "5772:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1981,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5772:27:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5749:50:5"
                },
                {
                  "assignments": [
                    1984
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1984,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1996,
                      "src": "5809:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1983,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "5809:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1988,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1985,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "5851:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1987,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1986,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1970,
                      "src": "5876:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5851:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5809:79:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1990,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1984,
                          "src": "5924:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1991,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1703,
                        "src": "5924:17:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1992,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1978,
                        "src": "5943:14:5",
                        "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": 1989,
                      "name": "isResponseRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3224,
                      "src": "5905:18:5",
                      "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": 1993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5905:53:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1976,
                  "id": 1994,
                  "nodeType": "Return",
                  "src": "5898:60:5"
                }
              ]
            },
            "documentation": "Returs true if response from given keyServer is required.",
            "id": 1996,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isDocumentKeyStoreResponseRequired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1973,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1970,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1996,
                  "src": "5670:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1969,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5670:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1972,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1996,
                  "src": "5691:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5691:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5669:40:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1976,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1975,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1996,
                  "src": "5733:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1974,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5733:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5732:6:5"
            },
            "scope": 2078,
            "src": "5626:339:5",
            "stateMutability": "view",
            "superFunction": 765,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2007,
              "nodeType": "Block",
              "src": "6131:45:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2003,
                      "name": "documentKeyStoreFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2068,
                      "src": "6141:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2004,
                      "name": "newFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1998,
                      "src": "6163:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6141:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2006,
                  "nodeType": "ExpressionStatement",
                  "src": "6141:28:5"
                }
              ]
            },
            "documentation": "Set document key store fee.",
            "id": 2008,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2001,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2000,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "6117:9:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6117:9:5"
              }
            ],
            "name": "setDocumentKeyStoreFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1998,
                  "name": "newFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 2008,
                  "src": "6078:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1997,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6078:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6077:16:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2002,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6131:0:5"
            },
            "scope": 2078,
            "src": "6046:130:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2019,
              "nodeType": "Block",
              "src": "6324:55:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2015,
                      "name": "maxDocumentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2070,
                      "src": "6334:27:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2016,
                      "name": "newLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2010,
                      "src": "6364:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6334:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2018,
                  "nodeType": "ExpressionStatement",
                  "src": "6334:38:5"
                }
              ]
            },
            "documentation": "Set document key store requests limit.",
            "id": 2020,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2013,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2012,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "6310:9:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6310:9:5"
              }
            ],
            "name": "setMaxDocumentKeyStoreRequests",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2011,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2010,
                  "name": "newLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2020,
                  "src": "6269:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2009,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6269:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6268:18:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2014,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6324:0:5"
            },
            "scope": 2078,
            "src": "6229:150:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2042,
              "nodeType": "Block",
              "src": "6525:206:5",
              "statements": [
                {
                  "assignments": [
                    2028
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2028,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2043,
                      "src": "6535:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2027,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "6535:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2032,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2029,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "6577:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 2031,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2030,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2022,
                      "src": "6602:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6577:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6535:79:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2034,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2022,
                        "src": "6653:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2035,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2028,
                        "src": "6666:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      ],
                      "id": 2033,
                      "name": "clearDocumentKeyStoreRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2066,
                      "src": "6624:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer)"
                      }
                    },
                    "id": 2036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6624:50:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2037,
                  "nodeType": "ExpressionStatement",
                  "src": "6624:50:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2039,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2022,
                        "src": "6712:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2038,
                      "name": "DocumentKeyStoreError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1722
                      ],
                      "referencedDeclaration": 1722,
                      "src": "6690:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6690:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2041,
                  "nodeType": "EmitStatement",
                  "src": "6685:39:5"
                }
              ]
            },
            "documentation": "Delete document key store request.",
            "id": 2043,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2025,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2024,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "6511:9:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6511:9:5"
              }
            ],
            "name": "deleteDocumentKeyStoreRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2023,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2022,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2043,
                  "src": "6467:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2021,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6467:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6466:21:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2026,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6525:0:5"
            },
            "scope": 2078,
            "src": "6428:303:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2065,
              "nodeType": "Block",
              "src": "6927:174:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2051,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2047,
                          "src": "6952:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 2052,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1703,
                        "src": "6952:17:5",
                        "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": 2050,
                      "name": "clearResponses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "6937:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$returns$__$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer)"
                      }
                    },
                    "id": 2053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6937:33:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2054,
                  "nodeType": "ExpressionStatement",
                  "src": "6937:33:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "6980:44:5",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2055,
                        "name": "documentKeyStoreRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2074,
                        "src": "6987:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                          "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                        }
                      },
                      "id": 2057,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2056,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2045,
                        "src": "7012:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6987:37:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2059,
                  "nodeType": "ExpressionStatement",
                  "src": "6980:44:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2061,
                        "name": "documentKeyStoreRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2077,
                        "src": "7052:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2062,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2045,
                        "src": "7082:11:5",
                        "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": 2060,
                      "name": "removeRequestKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3457,
                      "src": "7035:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 2063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7035:59:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2064,
                  "nodeType": "ExpressionStatement",
                  "src": "7035:59:5"
                }
              ]
            },
            "documentation": "Clear document key store request traces.",
            "id": 2066,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearDocumentKeyStoreRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2048,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2045,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2066,
                  "src": "6857:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2044,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6857:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2047,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 2066,
                  "src": "6878:39:5",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                    "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2046,
                    "name": "DocumentKeyStoreRequest",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1704,
                    "src": "6878:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6856:62:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6927:0:5"
            },
            "scope": 2078,
            "src": "6819:282:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2068,
            "name": "documentKeyStoreFee",
            "nodeType": "VariableDeclaration",
            "scope": 2078,
            "src": "7139:34:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2067,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "7139:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2070,
            "name": "maxDocumentKeyStoreRequests",
            "nodeType": "VariableDeclaration",
            "scope": 2078,
            "src": "7323:42:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2069,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "7323:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2074,
            "name": "documentKeyStoreRequests",
            "nodeType": "VariableDeclaration",
            "scope": 2078,
            "src": "7404:77:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
              "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest)"
            },
            "typeName": {
              "id": 2073,
              "keyType": {
                "id": 2071,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "7413:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "7404:44:5",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2072,
                "name": "DocumentKeyStoreRequest",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1704,
                "src": "7424:23:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                  "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2077,
            "name": "documentKeyStoreRequestsKeys",
            "nodeType": "VariableDeclaration",
            "scope": 2078,
            "src": "7524:46:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 2075,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "7524:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 2076,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "7524:9:5",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          }
        ],
        "scope": 2079,
        "src": "853:6720:5"
      }
    ],
    "src": "698:6876:5"
  },
  "legacyAST": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreDocumentKeyStoreService.sol",
    "exportedSymbols": {
      "SecretStoreDocumentKeyStoreService": [
        2078
      ]
    },
    "id": 2079,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1687,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "698:24:5"
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/SecretStoreService.sol",
        "file": "../interfaces/SecretStoreService.sol",
        "id": 1688,
        "nodeType": "ImportDirective",
        "scope": 2079,
        "sourceUnit": 872,
        "src": "724:46:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/service/SecretStoreServiceBase.sol",
        "file": "./SecretStoreServiceBase.sol",
        "id": 1689,
        "nodeType": "ImportDirective",
        "scope": 2079,
        "sourceUnit": 3513,
        "src": "771:38:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1690,
              "name": "SecretStoreServiceBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3512,
              "src": "900:22:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SecretStoreServiceBase_$3512",
                "typeString": "contract SecretStoreServiceBase"
              }
            },
            "id": 1691,
            "nodeType": "InheritanceSpecifier",
            "src": "900:22:5"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1692,
              "name": "DocumentKeyStoreServiceClientApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 718,
              "src": "924:32:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentKeyStoreServiceClientApi_$718",
                "typeString": "contract DocumentKeyStoreServiceClientApi"
              }
            },
            "id": 1693,
            "nodeType": "InheritanceSpecifier",
            "src": "924:32:5"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1694,
              "name": "DocumentKeyStoreServiceKeyServerApi",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 766,
              "src": "958:35:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DocumentKeyStoreServiceKeyServerApi_$766",
                "typeString": "contract DocumentKeyStoreServiceKeyServerApi"
              }
            },
            "id": 1695,
            "nodeType": "InheritanceSpecifier",
            "src": "958:35:5"
          }
        ],
        "contractDependencies": [
          718,
          766,
          3512,
          4823
        ],
        "contractKind": "contract",
        "documentation": "Document Key store service contract.",
        "fullyImplemented": true,
        "id": 2078,
        "linearizedBaseContracts": [
          2078,
          766,
          718,
          3512,
          4823
        ],
        "name": "SecretStoreDocumentKeyStoreService",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest",
            "id": 1704,
            "members": [
              {
                "constant": false,
                "id": 1697,
                "name": "author",
                "nodeType": "VariableDeclaration",
                "scope": 1704,
                "src": "1077:14:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1696,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1077:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1699,
                "name": "commonPoint",
                "nodeType": "VariableDeclaration",
                "scope": 1704,
                "src": "1101:17:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 1698,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1101:5:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1701,
                "name": "encryptedPoint",
                "nodeType": "VariableDeclaration",
                "scope": 1704,
                "src": "1128:20:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 1700,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1128:5:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1703,
                "name": "responses",
                "nodeType": "VariableDeclaration",
                "scope": 1704,
                "src": "1158:26:5",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                  "typeString": "struct SecretStoreServiceBase.RequestResponses"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 1702,
                  "name": "RequestResponses",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 3010,
                  "src": "1158:16:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RequestResponses_$3010_storage_ptr",
                    "typeString": "struct SecretStoreServiceBase.RequestResponses"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "DocumentKeyStoreRequest",
            "nodeType": "StructDefinition",
            "scope": 2078,
            "src": "1036:155:5",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": "When document key store request is received.",
            "id": 1714,
            "name": "DocumentKeyStoreRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1706,
                  "indexed": false,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1714,
                  "src": "1282:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1705,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1282:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1708,
                  "indexed": false,
                  "name": "author",
                  "nodeType": "VariableDeclaration",
                  "scope": 1714,
                  "src": "1303:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1707,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1303:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1710,
                  "indexed": false,
                  "name": "commonPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1714,
                  "src": "1319:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1709,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1319:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1712,
                  "indexed": false,
                  "name": "encryptedPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1714,
                  "src": "1338:20:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1711,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1338:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1281:78:5"
            },
            "src": "1250:110:5"
          },
          {
            "anonymous": false,
            "documentation": "When document key is stored.",
            "id": 1718,
            "name": "DocumentKeyStored",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1716,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1718,
                  "src": "1426:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1715,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1426:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1425:29:5"
            },
            "src": "1402:53:5"
          },
          {
            "anonymous": false,
            "documentation": "When error occurs during document key store.",
            "id": 1722,
            "name": "DocumentKeyStoreError",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1721,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1720,
                  "indexed": true,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1722,
                  "src": "1541:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1719,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1541:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1540:29:5"
            },
            "src": "1513:57:5"
          },
          {
            "body": {
              "id": 1738,
              "nodeType": "Block",
              "src": "1697:90:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1732,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1730,
                      "name": "documentKeyStoreFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2068,
                      "src": "1707:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 1731,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1729:10:5",
                      "subdenomination": "finney",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100000000000000000_by_1",
                        "typeString": "int_const 100000000000000000"
                      },
                      "value": "100"
                    },
                    "src": "1707:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1733,
                  "nodeType": "ExpressionStatement",
                  "src": "1707:32:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1734,
                      "name": "maxDocumentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2070,
                      "src": "1749:27:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "38",
                      "id": 1735,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1779:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_8_by_1",
                        "typeString": "int_const 8"
                      },
                      "value": "8"
                    },
                    "src": "1749:31:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1737,
                  "nodeType": "ExpressionStatement",
                  "src": "1749:31:5"
                }
              ]
            },
            "documentation": "Constructor.",
            "id": 1739,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1727,
                    "name": "keyServerSetAddressInit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1724,
                    "src": "1665:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1728,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1726,
                  "name": "SecretStoreServiceBase",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3512,
                  "src": "1642:22:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SecretStoreServiceBase_$3512_$",
                    "typeString": "type(contract SecretStoreServiceBase)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1642:47:5"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1724,
                  "name": "keyServerSetAddressInit",
                  "nodeType": "VariableDeclaration",
                  "scope": 1739,
                  "src": "1609:31:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1723,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1609:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1608:33:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1729,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1697:0:5"
            },
            "scope": 2078,
            "src": "1597:190:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1746,
              "nodeType": "Block",
              "src": "1896:61:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "446972656374207061796d656e747320617265206e6f7420737570706f727465642e",
                        "id": 1743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1913:36:5",
                        "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": 1742,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4843,
                        4844
                      ],
                      "referencedDeclaration": 4844,
                      "src": "1906:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 1744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1906:44:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1745,
                  "nodeType": "ExpressionStatement",
                  "src": "1906:44:5"
                }
              ]
            },
            "documentation": "We do not support direct payments.",
            "id": 1747,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1740,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1878:2:5"
            },
            "payable": true,
            "returnParameters": {
              "id": 1741,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1896:0:5"
            },
            "scope": 2078,
            "src": "1870:87:5",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1825,
              "nodeType": "Block",
              "src": "2321:694:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1766,
                            "name": "documentKeyStoreRequestsKeys",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2077,
                            "src": "2383:28:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                              "typeString": "bytes32[] storage ref"
                            }
                          },
                          "id": 1767,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2383:35:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1768,
                          "name": "maxDocumentKeyStoreRequests",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2070,
                          "src": "2421:27:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2383:65:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6178696d756d206e756d626572206f6620726571756573747320726561636865642e",
                        "id": 1770,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2450:37:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_435a8f6544441c7bce8ee9c56136c5fd617a069ed90f52583450a6d23a9f4b74",
                          "typeString": "literal_string \"Maximum number of requests reached.\""
                        },
                        "value": "Maximum number of requests reached."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_435a8f6544441c7bce8ee9c56136c5fd617a069ed90f52583450a6d23a9f4b74",
                          "typeString": "literal_string \"Maximum number of requests reached.\""
                        }
                      ],
                      "id": 1765,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2375:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2375:113:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1772,
                  "nodeType": "ExpressionStatement",
                  "src": "2375:113:5"
                },
                {
                  "assignments": [
                    1774
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1774,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1826,
                      "src": "2499:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1773,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "2499:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1778,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1775,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "2541:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1777,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1776,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1749,
                      "src": "2566:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2541:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2499:79:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1780,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1774,
                            "src": "2596:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                              "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                            }
                          },
                          "id": 1781,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "author",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1697,
                          "src": "2596:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2622:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 1782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2614:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 1784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2614:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2596:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5265717565737420617574686f722061646472657373206973203078302e",
                        "id": 1786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2626:32:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_991afaa2eab3937bf8e5dff96f3cab2a74c07cb028d912809f17bbfa6c92f14b",
                          "typeString": "literal_string \"Request author address is 0x0.\""
                        },
                        "value": "Request author address is 0x0."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_991afaa2eab3937bf8e5dff96f3cab2a74c07cb028d912809f17bbfa6c92f14b",
                          "typeString": "literal_string \"Request author address is 0x0.\""
                        }
                      ],
                      "id": 1779,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2588:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1787,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2588:71:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1788,
                  "nodeType": "ExpressionStatement",
                  "src": "2588:71:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 1789,
                      "name": "deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3180,
                      "src": "2669:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 1790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2669:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1791,
                  "nodeType": "ExpressionStatement",
                  "src": "2669:9:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1792,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "2689:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1794,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "author",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1697,
                      "src": "2689:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1795,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4838,
                        "src": "2706:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1796,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2706:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2689:27:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1798,
                  "nodeType": "ExpressionStatement",
                  "src": "2689:27:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1803,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1799,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "2726:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1801,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "commonPoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1699,
                      "src": "2726:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1802,
                      "name": "commonPoint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1751,
                      "src": "2748:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "2726:33:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 1804,
                  "nodeType": "ExpressionStatement",
                  "src": "2726:33:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1805,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "2769:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1807,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "encryptedPoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1701,
                      "src": "2769:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1808,
                      "name": "encryptedPoint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1753,
                      "src": "2794:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "2769:39:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 1810,
                  "nodeType": "ExpressionStatement",
                  "src": "2769:39:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1814,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1749,
                        "src": "2852:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1811,
                        "name": "documentKeyStoreRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2077,
                        "src": "2818:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 1813,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2818:33:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) returns (uint256)"
                      }
                    },
                    "id": 1815,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2818:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1816,
                  "nodeType": "ExpressionStatement",
                  "src": "2818:46:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1818,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1749,
                        "src": "2919:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1819,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "2944:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2944:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1821,
                        "name": "commonPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1751,
                        "src": "2968:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1822,
                        "name": "encryptedPoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1753,
                        "src": "2993:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 1817,
                      "name": "DocumentKeyStoreRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1714
                      ],
                      "referencedDeclaration": 1714,
                      "src": "2880:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,address,bytes memory,bytes memory)"
                      }
                    },
                    "id": 1823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2880:128:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1824,
                  "nodeType": "EmitStatement",
                  "src": "2875:133:5"
                }
              ]
            },
            "documentation": "Request document key store. Use `secretstore_generateDocumentKey` RPC to generate both\n `commonPoint` and `encryptedPoint`.",
            "id": 1826,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1756,
                    "name": "documentKeyStoreFee",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2068,
                    "src": "2227:19:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 1757,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1755,
                  "name": "whenFeePaid",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3024,
                  "src": "2215:11:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2215:32:5"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1759,
                    "name": "commonPoint",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1751,
                    "src": "2268:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1760,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1758,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "2256:11:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2256:24:5"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1762,
                    "name": "encryptedPoint",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1753,
                    "src": "2301:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_calldata_ptr",
                      "typeString": "bytes calldata"
                    }
                  }
                ],
                "id": 1763,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1761,
                  "name": "validPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3038,
                  "src": "2289:11:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2289:27:5"
              }
            ],
            "name": "storeDocumentKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1749,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1826,
                  "src": "2128:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1748,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2128:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1751,
                  "name": "commonPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1826,
                  "src": "2149:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1750,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2149:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1753,
                  "name": "encryptedPoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 1826,
                  "src": "2168:20:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1752,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2168:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2127:62:5"
            },
            "payable": true,
            "returnParameters": {
              "id": 1764,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2321:0:5"
            },
            "scope": 2078,
            "src": "2102:913:5",
            "stateMutability": "payable",
            "superFunction": 717,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1888,
              "nodeType": "Block",
              "src": "3131:998:5",
              "statements": [
                {
                  "assignments": [
                    1832
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1832,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1889,
                      "src": "3182:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1831,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "3182:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1836,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1833,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "3224:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1835,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1834,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1828,
                      "src": "3249:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3224:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3182:79:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1837,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1832,
                        "src": "3275:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1838,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "author",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1697,
                      "src": "3275:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1840,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3301:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3293:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3293:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3275:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1845,
                  "nodeType": "IfStatement",
                  "src": "3271:65:5",
                  "trueBody": {
                    "id": 1844,
                    "nodeType": "Block",
                    "src": "3305:31:5",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1830,
                        "id": 1843,
                        "nodeType": "Return",
                        "src": "3319:7:5"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1847
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1847,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1889,
                      "src": "3429:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1846,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3429:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1852,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1849,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "3469:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3469:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1848,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "3452:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3452:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3429:51:5"
                },
                {
                  "assignments": [
                    1854
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1854,
                      "name": "response",
                      "nodeType": "VariableDeclaration",
                      "scope": 1889,
                      "src": "3490:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1853,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3490:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1858,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3517:1:5",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 1855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3509:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": "bytes32"
                    },
                    "id": 1857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3509:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3490:29:5"
                },
                {
                  "assignments": [
                    1860
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1860,
                      "name": "responseSupport",
                      "nodeType": "VariableDeclaration",
                      "scope": 1889,
                      "src": "3529:31:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1859,
                        "name": "ResponseSupport",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2994,
                        "src": "3529:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                          "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1871,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1862,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1832,
                          "src": "3591:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1863,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1703,
                        "src": "3591:17:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1864,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1847,
                        "src": "3622:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 1868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1865,
                            "name": "keyServersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3060,
                            "src": "3650:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                              "typeString": "function () view returns (uint8)"
                            }
                          },
                          "id": 1866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3650:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 1867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3670:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "3650:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1869,
                        "name": "response",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1854,
                        "src": "3685:8:5",
                        "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": 1861,
                      "name": "insertResponse",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3378,
                      "src": "3563:14:5",
                      "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": 1870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3563:131:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3529:165:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                      "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                    },
                    "id": 1875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1872,
                      "name": "responseSupport",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1860,
                      "src": "3761:15:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1873,
                        "name": "ResponseSupport",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2994,
                        "src": "3780:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ResponseSupport_$2994_$",
                          "typeString": "type(enum SecretStoreServiceBase.ResponseSupport)"
                        }
                      },
                      "id": 1874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Unconfirmed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3780:27:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ResponseSupport_$2994",
                        "typeString": "enum SecretStoreServiceBase.ResponseSupport"
                      }
                    },
                    "src": "3761:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1878,
                  "nodeType": "IfStatement",
                  "src": "3757:106:5",
                  "trueBody": {
                    "id": 1877,
                    "nodeType": "Block",
                    "src": "3809:54:5",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1830,
                        "id": 1876,
                        "nodeType": "Return",
                        "src": "3846:7:5"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1880,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1828,
                        "src": "4056:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1881,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1832,
                        "src": "4069:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      ],
                      "id": 1879,
                      "name": "clearDocumentKeyStoreRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2066,
                      "src": "4027:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer)"
                      }
                    },
                    "id": 1882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4027:50:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1883,
                  "nodeType": "ExpressionStatement",
                  "src": "4027:50:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1885,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1828,
                        "src": "4110:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1884,
                      "name": "DocumentKeyStored",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1718
                      ],
                      "referencedDeclaration": 1718,
                      "src": "4092:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4092:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1887,
                  "nodeType": "EmitStatement",
                  "src": "4087:35:5"
                }
              ]
            },
            "documentation": "Called when store is reported by key server.",
            "id": 1889,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "documentKeyStored",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1829,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1828,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1889,
                  "src": "3101:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1827,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3101:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3100:21:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1830,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3131:0:5"
            },
            "scope": 2078,
            "src": "3074:1055:5",
            "stateMutability": "nonpayable",
            "superFunction": 733,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1923,
              "nodeType": "Block",
              "src": "4256:553:5",
              "statements": [
                {
                  "assignments": [
                    1895
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1895,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1924,
                      "src": "4307:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1894,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "4307:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1899,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1896,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "4349:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1898,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1897,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1891,
                      "src": "4374:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4349:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4307:79:5"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1900,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1895,
                        "src": "4400:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      },
                      "id": 1901,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "author",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1697,
                      "src": "4400:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4426:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4418:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1904,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4418:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4400:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1908,
                  "nodeType": "IfStatement",
                  "src": "4396:65:5",
                  "trueBody": {
                    "id": 1907,
                    "nodeType": "Block",
                    "src": "4430:31:5",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 1893,
                        "id": 1906,
                        "nodeType": "Return",
                        "src": "4444:7:5"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1910,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "4537:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4537:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1909,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "4520:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4520:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 1913,
                  "nodeType": "ExpressionStatement",
                  "src": "4520:28:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1915,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1891,
                        "src": "4732:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1916,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1895,
                        "src": "4745:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      ],
                      "id": 1914,
                      "name": "clearDocumentKeyStoreRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2066,
                      "src": "4703:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer)"
                      }
                    },
                    "id": 1917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4703:50:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1918,
                  "nodeType": "ExpressionStatement",
                  "src": "4703:50:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1920,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1891,
                        "src": "4790:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1919,
                      "name": "DocumentKeyStoreError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1722
                      ],
                      "referencedDeclaration": 1722,
                      "src": "4768:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 1921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4768:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1922,
                  "nodeType": "EmitStatement",
                  "src": "4763:39:5"
                }
              ]
            },
            "documentation": "Called when error occurs during document key store.",
            "id": 1924,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "documentKeyStoreError",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1892,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1891,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1924,
                  "src": "4226:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1890,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4226:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4225:21:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1893,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4256:0:5"
            },
            "scope": 2078,
            "src": "4195:614:5",
            "stateMutability": "nonpayable",
            "superFunction": 738,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1932,
              "nodeType": "Block",
              "src": "4946:59:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1929,
                      "name": "documentKeyStoreRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2077,
                      "src": "4963:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1930,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4963:35:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1928,
                  "id": 1931,
                  "nodeType": "Return",
                  "src": "4956:42:5"
                }
              ]
            },
            "documentation": "Get count of pending document key store requests.",
            "id": 1933,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "documentKeyStoreRequestsCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1925,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4911:2:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1928,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1927,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1933,
                  "src": "4937:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4937:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4936:9:5"
            },
            "scope": 2078,
            "src": "4873:132:5",
            "stateMutability": "view",
            "superFunction": 743,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1967,
              "nodeType": "Block",
              "src": "5242:312:5",
              "statements": [
                {
                  "assignments": [
                    1947
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1947,
                      "name": "serverKeyId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1968,
                      "src": "5252:19:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1946,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5252:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1951,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1948,
                      "name": "documentKeyStoreRequestsKeys",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2077,
                      "src": "5274:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 1950,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1949,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1935,
                      "src": "5303:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5274:35:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5252:57:5"
                },
                {
                  "assignments": [
                    1953
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1953,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1968,
                      "src": "5319:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1952,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "5319:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1957,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1954,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "5361:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1956,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1955,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1947,
                      "src": "5386:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5361:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5319:79:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 1958,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1947,
                        "src": "5429:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1959,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1953,
                          "src": "5454:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1960,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "author",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1697,
                        "src": "5454:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1961,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1953,
                          "src": "5482:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1962,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "commonPoint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1699,
                        "src": "5482:19:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1963,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1953,
                          "src": "5515:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1964,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "encryptedPoint",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1701,
                        "src": "5515:22:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "id": 1965,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5415:132:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_address_$_t_bytes_storage_$_t_bytes_storage_$",
                      "typeString": "tuple(bytes32,address,bytes storage ref,bytes storage ref)"
                    }
                  },
                  "functionReturnParameters": 1945,
                  "id": 1966,
                  "nodeType": "Return",
                  "src": "5408:139:5"
                }
              ]
            },
            "documentation": "Get document key store request with given index.\n Returns: (serverKeyId, author, commonPoint, encryptedPoint)",
            "id": 1968,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getDocumentKeyStoreRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1935,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5172:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1934,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5172:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5171:15:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1938,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5210:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1937,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5210:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1940,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5219:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1939,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5219:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1942,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5228:5:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1941,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5228:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1944,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1968,
                  "src": "5235:5:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1943,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5235:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5209:32:5"
            },
            "scope": 2078,
            "src": "5136:418:5",
            "stateMutability": "view",
            "superFunction": 756,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1995,
              "nodeType": "Block",
              "src": "5739:226:5",
              "statements": [
                {
                  "assignments": [
                    1978
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1978,
                      "name": "keyServerIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 1996,
                      "src": "5749:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1977,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5749:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1982,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1980,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1972,
                        "src": "5789:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1979,
                      "name": "requireKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3075,
                      "src": "5772:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint8_$",
                        "typeString": "function (address) view returns (uint8)"
                      }
                    },
                    "id": 1981,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5772:27:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5749:50:5"
                },
                {
                  "assignments": [
                    1984
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1984,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 1996,
                      "src": "5809:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1983,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "5809:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1988,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1985,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "5851:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 1987,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1986,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1970,
                      "src": "5876:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5851:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5809:79:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1990,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1984,
                          "src": "5924:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 1991,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1703,
                        "src": "5924:17:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RequestResponses_$3010_storage",
                          "typeString": "struct SecretStoreServiceBase.RequestResponses storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1992,
                        "name": "keyServerIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1978,
                        "src": "5943:14:5",
                        "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": 1989,
                      "name": "isResponseRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3224,
                      "src": "5905:18:5",
                      "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": 1993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5905:53:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1976,
                  "id": 1994,
                  "nodeType": "Return",
                  "src": "5898:60:5"
                }
              ]
            },
            "documentation": "Returs true if response from given keyServer is required.",
            "id": 1996,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isDocumentKeyStoreResponseRequired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1973,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1970,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1996,
                  "src": "5670:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1969,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5670:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1972,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1996,
                  "src": "5691:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5691:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5669:40:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 1976,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1975,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1996,
                  "src": "5733:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1974,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5733:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5732:6:5"
            },
            "scope": 2078,
            "src": "5626:339:5",
            "stateMutability": "view",
            "superFunction": 765,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2007,
              "nodeType": "Block",
              "src": "6131:45:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2003,
                      "name": "documentKeyStoreFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2068,
                      "src": "6141:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2004,
                      "name": "newFee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1998,
                      "src": "6163:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6141:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2006,
                  "nodeType": "ExpressionStatement",
                  "src": "6141:28:5"
                }
              ]
            },
            "documentation": "Set document key store fee.",
            "id": 2008,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2001,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2000,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "6117:9:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6117:9:5"
              }
            ],
            "name": "setDocumentKeyStoreFee",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1998,
                  "name": "newFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 2008,
                  "src": "6078:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1997,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6078:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6077:16:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2002,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6131:0:5"
            },
            "scope": 2078,
            "src": "6046:130:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2019,
              "nodeType": "Block",
              "src": "6324:55:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2015,
                      "name": "maxDocumentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2070,
                      "src": "6334:27:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2016,
                      "name": "newLimit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2010,
                      "src": "6364:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6334:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2018,
                  "nodeType": "ExpressionStatement",
                  "src": "6334:38:5"
                }
              ]
            },
            "documentation": "Set document key store requests limit.",
            "id": 2020,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2013,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2012,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "6310:9:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6310:9:5"
              }
            ],
            "name": "setMaxDocumentKeyStoreRequests",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2011,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2010,
                  "name": "newLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2020,
                  "src": "6269:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2009,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6269:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6268:18:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2014,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6324:0:5"
            },
            "scope": 2078,
            "src": "6229:150:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2042,
              "nodeType": "Block",
              "src": "6525:206:5",
              "statements": [
                {
                  "assignments": [
                    2028
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2028,
                      "name": "request",
                      "nodeType": "VariableDeclaration",
                      "scope": 2043,
                      "src": "6535:39:5",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2027,
                        "name": "DocumentKeyStoreRequest",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1704,
                        "src": "6535:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2032,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2029,
                      "name": "documentKeyStoreRequests",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2074,
                      "src": "6577:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                        "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                      }
                    },
                    "id": 2031,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2030,
                      "name": "serverKeyId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2022,
                      "src": "6602:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6577:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6535:79:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2034,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2022,
                        "src": "6653:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2035,
                        "name": "request",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2028,
                        "src": "6666:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                          "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                        }
                      ],
                      "id": 2033,
                      "name": "clearDocumentKeyStoreRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2066,
                      "src": "6624:28:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr_$returns$__$",
                        "typeString": "function (bytes32,struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer)"
                      }
                    },
                    "id": 2036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6624:50:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2037,
                  "nodeType": "ExpressionStatement",
                  "src": "6624:50:5"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2039,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2022,
                        "src": "6712:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2038,
                      "name": "DocumentKeyStoreError",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1722
                      ],
                      "referencedDeclaration": 1722,
                      "src": "6690:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6690:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2041,
                  "nodeType": "EmitStatement",
                  "src": "6685:39:5"
                }
              ]
            },
            "documentation": "Delete document key store request.",
            "id": 2043,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 2025,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2024,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "6511:9:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6511:9:5"
              }
            ],
            "name": "deleteDocumentKeyStoreRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2023,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2022,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2043,
                  "src": "6467:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2021,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6467:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6466:21:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2026,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6525:0:5"
            },
            "scope": 2078,
            "src": "6428:303:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2065,
              "nodeType": "Block",
              "src": "6927:174:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2051,
                          "name": "request",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2047,
                          "src": "6952:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                            "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage pointer"
                          }
                        },
                        "id": 2052,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "responses",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1703,
                        "src": "6952:17:5",
                        "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": 2050,
                      "name": "clearResponses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3407,
                      "src": "6937:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_RequestResponses_$3010_storage_ptr_$returns$__$",
                        "typeString": "function (struct SecretStoreServiceBase.RequestResponses storage pointer)"
                      }
                    },
                    "id": 2053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6937:33:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2054,
                  "nodeType": "ExpressionStatement",
                  "src": "6937:33:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "6980:44:5",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2055,
                        "name": "documentKeyStoreRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2074,
                        "src": "6987:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                          "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref)"
                        }
                      },
                      "id": 2057,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2056,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2045,
                        "src": "7012:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6987:37:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage",
                        "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2059,
                  "nodeType": "ExpressionStatement",
                  "src": "6980:44:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2061,
                        "name": "documentKeyStoreRequestsKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2077,
                        "src": "7052:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2062,
                        "name": "serverKeyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2045,
                        "src": "7082:11:5",
                        "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": 2060,
                      "name": "removeRequestKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3457,
                      "src": "7035:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32[] storage pointer,bytes32)"
                      }
                    },
                    "id": 2063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7035:59:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2064,
                  "nodeType": "ExpressionStatement",
                  "src": "7035:59:5"
                }
              ]
            },
            "documentation": "Clear document key store request traces.",
            "id": 2066,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearDocumentKeyStoreRequest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2048,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2045,
                  "name": "serverKeyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2066,
                  "src": "6857:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2044,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6857:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2047,
                  "name": "request",
                  "nodeType": "VariableDeclaration",
                  "scope": 2066,
                  "src": "6878:39:5",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                    "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2046,
                    "name": "DocumentKeyStoreRequest",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1704,
                    "src": "6878:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                      "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6856:62:5"
            },
            "payable": false,
            "returnParameters": {
              "id": 2049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6927:0:5"
            },
            "scope": 2078,
            "src": "6819:282:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2068,
            "name": "documentKeyStoreFee",
            "nodeType": "VariableDeclaration",
            "scope": 2078,
            "src": "7139:34:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2067,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "7139:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2070,
            "name": "maxDocumentKeyStoreRequests",
            "nodeType": "VariableDeclaration",
            "scope": 2078,
            "src": "7323:42:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2069,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "7323:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2074,
            "name": "documentKeyStoreRequests",
            "nodeType": "VariableDeclaration",
            "scope": 2078,
            "src": "7404:77:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
              "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest)"
            },
            "typeName": {
              "id": 2073,
              "keyType": {
                "id": 2071,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "7413:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "7404:44:5",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentKeyStoreRequest_$1704_storage_$",
                "typeString": "mapping(bytes32 => struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2072,
                "name": "DocumentKeyStoreRequest",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1704,
                "src": "7424:23:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_DocumentKeyStoreRequest_$1704_storage_ptr",
                  "typeString": "struct SecretStoreDocumentKeyStoreService.DocumentKeyStoreRequest"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2077,
            "name": "documentKeyStoreRequestsKeys",
            "nodeType": "VariableDeclaration",
            "scope": 2078,
            "src": "7524:46:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 2075,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "7524:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 2076,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "7524:9:5",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          }
        ],
        "scope": 2079,
        "src": "853:6720:5"
      }
    ],
    "src": "698:6876:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2019-01-23T09:53:59.499Z"
}