{
  "contractName": "OwnedKeyServerSetWithMigration",
  "abi": [
    {
      "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": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "KeyServerAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "KeyServerRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "MigrationStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "MigrationCompleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getCurrentLastChange",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "getCurrentKeyServerIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getCurrentKeyServersCount",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "getCurrentKeyServer",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getCurrentKeyServers",
      "outputs": [
        {
          "name": "",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "getCurrentKeyServerPublic",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "getCurrentKeyServerAddress",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMigrationKeyServers",
      "outputs": [
        {
          "name": "",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "getMigrationKeyServerPublic",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "getMigrationKeyServerAddress",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getNewKeyServers",
      "outputs": [
        {
          "name": "",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "getNewKeyServerPublic",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "getNewKeyServerAddress",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMigrationId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "startMigration",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "confirmMigration",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMigrationMaster",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "isMigrationConfirmed",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "completeInitialization",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "keyServerPublic",
          "type": "bytes"
        },
        {
          "name": "keyServerIp",
          "type": "string"
        }
      ],
      "name": "addKeyServer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "keyServer",
          "type": "address"
        }
      ],
      "name": "removeKeyServer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604081905260008054600160a060020a0319163317808255600160a060020a0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3612a6f806100576000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630ec71f8281146101be5780631455eb9a146101ef5780631d7f767314610285578063287fb40c1461029f5780632ac4ecd8146102d65780632b73af52146102f7578063362b282d1461031e5780633a3f720114610383578063447f5b181461039b578063529377d0146103b05780635560c965146103e55780635827b250146103fa5780635e9f171d1461040f5780636452e82114610424578063715018a61461043957806375de2a061461044e5780638416e7c21461046f5780638da5cb5b146104905780638f32d59b146104a5578063a86560be146104ba578063ab55cb48146104db578063c66198dc146104fc578063eaffb96514610517578063f2a2a90014610538578063f2fde38b146105cf575b6040805160e560020a62461bcd02815260206004820152602a60248201527f436f6e747261637420646f6573206e6f7420737570706f72742064697265637460448201527f207061796d656e74732e00000000000000000000000000000000000000000000606482015290519081900360840190fd5b3480156101ca57600080fd5b506101d36105f0565b60408051600160a060020a039092168252519081900360200190f35b3480156101fb57600080fd5b50610210600160a060020a0360043516610600565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024a578181015183820152602001610232565b50505050905090810190601f1680156102775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029157600080fd5b5061029d6004356107cc565b005b3480156102ab57600080fd5b506102c0600160a060020a0360043516610b66565b6040805160ff9092168252519081900360200190f35b3480156102e257600080fd5b50610210600160a060020a0360043516610c65565b34801561030357600080fd5b5061030c610df8565b60408051918252519081900360200190f35b34801561032a57600080fd5b50610333610e5f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561036f578181015183820152602001610357565b505050509050019250505060405180910390f35b34801561038f57600080fd5b5061029d600435610ec4565b3480156103a757600080fd5b5061033361124a565b3480156103bc57600080fd5b506103d1600160a060020a03600435166112ad565b604080519115158252519081900360200190f35b3480156103f157600080fd5b506102c061148f565b34801561040657600080fd5b5061029d611495565b34801561041b57600080fd5b50610333611552565b34801561043057600080fd5b5061030c6115b5565b34801561044557600080fd5b5061029d6115bb565b34801561045a57600080fd5b50610210600160a060020a0360043516611618565b34801561047b57600080fd5b50610210600160a060020a03600435166117ad565b34801561049c57600080fd5b506101d361191b565b3480156104b157600080fd5b506103d161192a565b3480156104c657600080fd5b50610210600160a060020a036004351661193b565b3480156104e757600080fd5b50610210600160a060020a0360043516611acf565b34801561050857600080fd5b506101d360ff60043516611c3e565b34801561052357600080fd5b5061029d600160a060020a0360043516611cc9565b34801561054457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261029d94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611e4c9650505050505050565b3480156105db57600080fd5b5061029d600160a060020a03600435166120a1565b600854600160a060020a03165b90565b60408051600160a060020a0383166000908152600560205291909120600290810180546060938593600080516020612a24833981519152939282918491610100600182161502600019011604801561068f5780601f1061066d57610100808354040283529182019161068f565b820191906000526020600020905b81548152906001019060200180831161067b575b50509150506040518091039020600019161415151561071d576040805160e560020a62461bcd028152602060048201526024808201527f536572766572206973206e6f7420696e20746865206d6967726174696f6e732060448201527f7365742e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038316600090815260056020908152604091829020600190810180548451600293821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b820191906000526020600020905b8154815290600101906020018083116107a257829003601f168201915b5050505050915050919050565b600854600160a060020a03161561082d576040805160e560020a62461bcd02815260206004820152601d60248201527f546865726520697320616e20616374697665206d6967726174696f6e2e000000604482015290519081900360640190fd5b80801515610885576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6967726174696f6e206964206973206e6f742076616c69642e000000000000604482015290519081900360640190fd5b610891600260066120c0565b156108e6576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6967726174696f6e206973206e6f742072657175697265642e000000000000604482015290519081900360640190fd5b6040805133600090815260036020529190912060029081018054600080516020612a24833981519152939192829184916101006001831615026000190190911604801561096a5780601f1061094857610100808354040283529182019161096a565b820191906000526020600020905b815481529060010190602001808311610956575b5050915050604051809103902060001916141580610a1b57506040805133600090815260076020529190912060029081018054600080516020612a248339815191529391928291849161010060018316150260001901909116048015610a075780601f106109e5576101008083540402835291820191610a07565b820191906000526020600020905b8154815290600101906020018083116109f3575b505091505060405180910390206000191614155b1515610a97576040805160e560020a62461bcd02815260206004820152603060248201527f53656e646572206973206e6f74206120706f74656e7469616c206d696772617460448201527f696f6e207061727469636970616e742e00000000000000000000000000000000606482015290519081900360840190fd5b6006541515610b16576040805160e560020a62461bcd02815260206004820152602560248201527f4d6967726174696f6e20746f20656d7074792073657420697320696d706f737360448201527f69626c652e000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60088054600160a060020a031916331790556009829055610b39600460066122bf565b6040517f882ea0955bd5561a49a52ef27eb0a7b8263561bd890de2ccfbc107df7724f18890600090a15050565b600160a060020a038116600090815260036020526040808220905160028281018054600080516020612a248339815191529391928291849161010060018316150260001901909116048015610bf25780601f10610bd0576101008083540402835291820191610bf2565b820191906000526020600020905b815481529060010190602001808311610bde575b505091505060405180910390206000191614151515610c5b576040805160e560020a62461bcd02815260206004820152601560248201527f456e74727920646f6573206e6f742065786973742e0000000000000000000000604482015290519081900360640190fd5b5460ff1692915050565b60408051600160a060020a0383166000908152600560205291909120600290810180546060938593600080516020612a248339815191529392829184916101006001821615026000190116048015610cf45780601f10610cd2576101008083540402835291820191610cf4565b820191906000526020600020905b815481529060010190602001808311610ce0575b505091505060405180910390206000191614151515610d82576040805160e560020a62461bcd028152602060048201526024808201527f536572766572206973206e6f7420696e20746865206d6967726174696f6e732060448201527f7365742e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600560209081526040918290206002908101805484516001821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b600954600090801515610e55576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6967726174696f6e206964206973206e6f742076616c69642e000000000000604482015290519081900360640190fd5b60095491505b5090565b60606006600001805480602002602001604051908101604052809291908181526020018280548015610eba57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e9c575b5050505050905090565b60008082801515610f1f576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6967726174696f6e206964206973206e6f742076616c69642e000000000000604482015290519081900360640190fd5b60095484908114610fa0576040805160e560020a62461bcd02815260206004820152602660248201527f4d6967726174696f6e207769746820676976656e206964206973206e6f74206160448201527f63746976652e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040805133600081815260056020529290922060029081018054600080516020612a2483398151915293919282918491610100600183161502600019019091160480156110245780601f10611002576101008083540402835291820191611024565b820191906000526020600020905b815481529060010190602001808311611010575b5050915050604051809103902060001916141515156110b2576040805160e560020a62461bcd028152602060048201526024808201527f536572766572206973206e6f7420696e20746865206d6967726174696f6e732060448201527f7365742e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152600a602052604090205460ff161561111a576040805160e560020a62461bcd02815260206004820152601f60248201527f4d6967726174696f6e20697320616c726561647920636f6e6669726d65642e00604482015290519081900360640190fd5b336000908152600a60205260408120805460ff1916600117905594505b6004548510156111935760048054600a916000918890811061115557fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16151561118857611242565b846001019450611137565b600093505b6004548410156111ee5760048054600a91600091879081106111b657fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020805460ff1916905560019390930192611198565b60088054600160a060020a031916905561120a600260046122bf565b6112146004612438565b6040517fd54b6ad1fb1b396d056c6d670ae90d40d49ad3253a6387dc5120c45bfc51453490600090a1436001555b505050505050565b60606004600001805480602002602001604051908101604052809291908181526020018280548015610eba57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610e9c575050505050905090565b60408051600160a060020a03831660009081526003602052918220600290810180548593600080516020612a248339815191529390918291849161010060018216150260001901160480156113395780601f10611317576101008083540402835291820191611339565b820191906000526020600020905b815481529060010190602001808311611325575b50509150506040518091039020600019161415806113f3575060408051600160a060020a038316600090815260056020529190912060029081018054600080516020612a2483398151915293919282918491610100600183161502600019019091160480156113df5780601f106113bd5761010080835404028352918201916113df565b820191906000526020600020905b8154815290600101906020018083116113cb575b505091505060405180910390206000191614155b151561146f576040805160e560020a62461bcd02815260206004820152602660248201527f536572766572206973206e6f742061206d6967726174696f6e2070617274696360448201527f6970616e742e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5050600160a060020a03166000908152600a602052604090205460ff1690565b60025490565b61149d61192a565b15156114a857600080fd5b60005474010000000000000000000000000000000000000000900460ff161561151b576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420696e697469616c697a65642100000000000000000000000000000000604482015290519081900360640190fd5b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60606002600001805480602002602001604051908101604052809291908181526020018280548015610eba57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610e9c575050505050905090565b60015490565b6115c361192a565b15156115ce57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360008054600160a060020a0319169055565b60408051600160a060020a0383166000908152600360205291909120600290810180546060938593600080516020612a2483398151915293928291849161010060018216150260001901160480156116a75780601f106116855761010080835404028352918201916116a7565b820191906000526020600020905b815481529060010190602001808311611693575b505091505060405180910390206000191614151515611736576040805160e560020a62461bcd02815260206004820152602160248201527f536572766572206973206e6f7420696e207468652063757272656e742073657460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038316600090815260036020908152604091829020600190810180548451600293821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b60408051600160a060020a0383166000908152600760205291909120600290810180546060938593600080516020612a24833981519152939282918491610100600182161502600019011604801561183c5780601f1061181a57610100808354040283529182019161183c565b820191906000526020600020905b815481529060010190602001808311611828575b5050915050604051809103902060001916141515156118a5576040805160e560020a62461bcd02815260206004820152601d60248201527f536572766572206973206e6f7420696e20746865206e6577207365742e000000604482015290519081900360640190fd5b600160a060020a0383166000908152600760209081526040918290206002908101805484516001821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b600054600160a060020a031690565b600054600160a060020a0316331490565b60408051600160a060020a0383166000908152600360205291909120600290810180546060938593600080516020612a2483398151915293928291849161010060018216150260001901160480156119ca5780601f106119a85761010080835404028352918201916119ca565b820191906000526020600020905b8154815290600101906020018083116119b6575b505091505060405180910390206000191614151515611a59576040805160e560020a62461bcd02815260206004820152602160248201527f536572766572206973206e6f7420696e207468652063757272656e742073657460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600360209081526040918290206002908101805484516001821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b60408051600160a060020a0383166000908152600760205291909120600290810180546060938593600080516020612a248339815191529392829184916101006001821615026000190116048015611b5e5780601f10611b3c576101008083540402835291820191611b5e565b820191906000526020600020905b815481529060010190602001808311611b4a575b505091505060405180910390206000191614151515611bc7576040805160e560020a62461bcd02815260206004820152601d60248201527f536572766572206973206e6f7420696e20746865206e6577207365742e000000604482015290519081900360640190fd5b600160a060020a038316600090815260076020908152604091829020600190810180548451600293821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b60025460009060ff831610611c9d576040805160e560020a62461bcd02815260206004820152601760248201527f496e646578206973206f7574206f6620626f756e64732e000000000000000000604482015290519081900360640190fd5b6002805460ff8416908110611cae57fe5b600091825260209091200154600160a060020a031692915050565b611cd161192a565b1515611cdc57600080fd5b60408051600160a060020a0383166000908152600760205291909120600290810180548493600080516020612a24833981519152939091829184916101006001821615026000190116048015611d695780601f10611d47576101008083540402835291820191611d69565b820191906000526020600020905b815481529060010190602001808311611d55575b505091505060405180910390206000191614151515611dd2576040805160e560020a62461bcd02815260206004820152601d60248201527f536572766572206973206e6f7420696e20746865206e6577207365742e000000604482015290519081900360640190fd5b611ddd6006836124f6565b60005474010000000000000000000000000000000000000000900460ff161515611e0c57611e0c6002836124f6565b60408051600160a060020a038416815290517f7af0e7a6072f80f6e718184ff67a09d85fb6855266e2317eccbafa9a7fd15b939181900360200190a15050565b6000611e5661192a565b1515611e6157600080fd5b8151829081901515611ebd576040805160e560020a62461bcd02815260206004820152601060248201527f537472696e6720697320656d7074792e00000000000000000000000000000000604482015290519081900360640190fd5b84611ec78161261c565b1515611f1d576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b611f2686612623565b60408051600160a060020a038316600090815260076020529190912060029081018054600080516020612a248339815191529391928291849161010060018316150260001901909116048015611fb35780601f10611f91576101008083540402835291820191611fb3565b820191906000526020600020905b815481529060010190602001808311611f9f575b505091505060405180910390206000191614151561201b576040805160e560020a62461bcd02815260206004820152601960248201527f53657276657220697320696e20746865206e6577207365742e00000000000000604482015290519081900360640190fd5b61202760068888612690565b60005490955074010000000000000000000000000000000000000000900460ff16151561205c5761205a60028888612690565b505b60408051600160a060020a038716815290517ff7513afac0a2e66c205ba63d0a611b6ba60fbbc861693aa8c5e197aba23eb3e99181900360200190a150505050505050565b6120a961192a565b15156120b457600080fd5b6120bd816127cd565b50565b600080805b84548210156121bb578454600080516020612a248339815191529060018601906000908890869081106120f457fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060020160405180828054600181600116156101000203166002900480156121905780601f1061216e576101008083540402835291820191612190565b820191906000526020600020905b81548152906001019060200180831161217c575b505091505060405180910390206000191614156121b057600092506122b7565b8160010191506120c5565b5060005b83548110156122b2578354600080516020612a248339815191529060018701906000908790859081106121ee57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001908152602001600020600201604051808280546001816001161561010002031660029004801561228a5780601f1061226857610100808354040283529182019161228a565b820191906000526020600020905b815481529060010190602001808311612276575b505091505060405180910390206000191614156122aa57600092506122b7565b6001016121bf565b600192505b505092915050565b6000805b83548210156123385783600101600085600001848154811015156122e357fe5b6000918252602080832090910154600160a060020a031683528201929092526040018120805460ff191681559061231d600183018261283d565b61232b60028301600061283d565b50508160010191506122c3565b82546123479085908590612881565b50600090505b835481101561243257826001016000856000018381548110151561236d57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400181208554909160018701918790859081106123a657fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190208154815460ff191660ff90911617815560018281018054612402928481019291600260001992821615610100029290920116046128cd565b50600282810180546124279284810192916000196101006001831615020116046128cd565b50505060010161234d565b50505050565b60005b8154600010156124f25781548290600019810190811061245757fe5b6000918252602090912001548254600160a060020a0390911691508290600019810190811061248257fe5b60009182526020909120018054600160a060020a03191690558154600019016124ab838261294e565b50600160a060020a0381166000908152600180840160205260408220805460ff1916815591906124dd9083018261283d565b6124eb60028301600061283d565b505061243b565b5050565b600160a060020a0381166000908152600183016020526040812054835460ff9182169260001982019290918691841690811061252e57fe5b6000918252602090912001548554600160a060020a0390911691508190869060ff861690811061255a57fe5b60009182526020808320919091018054600160a060020a031916600160a060020a0394851617905591831681526001870190915260409020805460ff191660ff858116919091179091558554869184169081106125b357fe5b600091825260208083209091018054600160a060020a0319169055600160a060020a0386168252600187810190915260408220805460ff1916815591906125fc9083018261283d565b61260a60028301600061283d565b5050845461124286600019830161294e565b5160401490565b6000816040518082805190602001908083835b602083106126555780518252601f199092019160209182019101612636565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120600160a060020a031695945050505050565b8254600090819061010011612715576040805160e560020a62461bcd02815260206004820152602b60248201527f4e756d626572206f662073657276657273206d75737420626520736d616c6c6560448201527f72207468616e203235362e000000000000000000000000000000000000000000606482015290519081900360840190fd5b61271e84612623565b8554600160a060020a0382166000908152600180890160209081526040909220805460ff191660ff90941693909317835587519394506127649392019190870190612977565b50600160a060020a03811660009081526001860160209081526040909120845161279692600290920191860190612977565b508454600181018655600086815260209020018054600160a060020a038316600160a060020a031990911617905590509392505050565b600160a060020a03811615156127e257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b50805460018160011615610100020316600290046000825580601f1061286357506120bd565b601f0160209004906000526020600020908101906120bd91906129e5565b8280548282559060005260206000209081019282156128c15760005260206000209182015b828111156128c15782548255916001019190600101906128a6565b50610e5b9291506129ff565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129065780548555612942565b8280016001018555821561294257600052602060002091601f016020900482015b82811115612942578254825591600101919060010190612927565b50610e5b9291506129e5565b815481835581811115612972576000838152602090206129729181019083016129e5565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129b857805160ff1916838001178555612942565b82800160010185558215612942579182015b828111156129425782518255916020019190600101906129ca565b6105fd91905b80821115610e5b57600081556001016129eb565b6105fd91905b80821115610e5b578054600160a060020a0319168155600101612a055600c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470a165627a7a72305820c0311e899293013c9ca1d3c7374189a7296b7f868d1f27518c01d2b328fb4d9f0029",
  "deployedBytecode": "0x6080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630ec71f8281146101be5780631455eb9a146101ef5780631d7f767314610285578063287fb40c1461029f5780632ac4ecd8146102d65780632b73af52146102f7578063362b282d1461031e5780633a3f720114610383578063447f5b181461039b578063529377d0146103b05780635560c965146103e55780635827b250146103fa5780635e9f171d1461040f5780636452e82114610424578063715018a61461043957806375de2a061461044e5780638416e7c21461046f5780638da5cb5b146104905780638f32d59b146104a5578063a86560be146104ba578063ab55cb48146104db578063c66198dc146104fc578063eaffb96514610517578063f2a2a90014610538578063f2fde38b146105cf575b6040805160e560020a62461bcd02815260206004820152602a60248201527f436f6e747261637420646f6573206e6f7420737570706f72742064697265637460448201527f207061796d656e74732e00000000000000000000000000000000000000000000606482015290519081900360840190fd5b3480156101ca57600080fd5b506101d36105f0565b60408051600160a060020a039092168252519081900360200190f35b3480156101fb57600080fd5b50610210600160a060020a0360043516610600565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024a578181015183820152602001610232565b50505050905090810190601f1680156102775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029157600080fd5b5061029d6004356107cc565b005b3480156102ab57600080fd5b506102c0600160a060020a0360043516610b66565b6040805160ff9092168252519081900360200190f35b3480156102e257600080fd5b50610210600160a060020a0360043516610c65565b34801561030357600080fd5b5061030c610df8565b60408051918252519081900360200190f35b34801561032a57600080fd5b50610333610e5f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561036f578181015183820152602001610357565b505050509050019250505060405180910390f35b34801561038f57600080fd5b5061029d600435610ec4565b3480156103a757600080fd5b5061033361124a565b3480156103bc57600080fd5b506103d1600160a060020a03600435166112ad565b604080519115158252519081900360200190f35b3480156103f157600080fd5b506102c061148f565b34801561040657600080fd5b5061029d611495565b34801561041b57600080fd5b50610333611552565b34801561043057600080fd5b5061030c6115b5565b34801561044557600080fd5b5061029d6115bb565b34801561045a57600080fd5b50610210600160a060020a0360043516611618565b34801561047b57600080fd5b50610210600160a060020a03600435166117ad565b34801561049c57600080fd5b506101d361191b565b3480156104b157600080fd5b506103d161192a565b3480156104c657600080fd5b50610210600160a060020a036004351661193b565b3480156104e757600080fd5b50610210600160a060020a0360043516611acf565b34801561050857600080fd5b506101d360ff60043516611c3e565b34801561052357600080fd5b5061029d600160a060020a0360043516611cc9565b34801561054457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261029d94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611e4c9650505050505050565b3480156105db57600080fd5b5061029d600160a060020a03600435166120a1565b600854600160a060020a03165b90565b60408051600160a060020a0383166000908152600560205291909120600290810180546060938593600080516020612a24833981519152939282918491610100600182161502600019011604801561068f5780601f1061066d57610100808354040283529182019161068f565b820191906000526020600020905b81548152906001019060200180831161067b575b50509150506040518091039020600019161415151561071d576040805160e560020a62461bcd028152602060048201526024808201527f536572766572206973206e6f7420696e20746865206d6967726174696f6e732060448201527f7365742e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038316600090815260056020908152604091829020600190810180548451600293821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b820191906000526020600020905b8154815290600101906020018083116107a257829003601f168201915b5050505050915050919050565b600854600160a060020a03161561082d576040805160e560020a62461bcd02815260206004820152601d60248201527f546865726520697320616e20616374697665206d6967726174696f6e2e000000604482015290519081900360640190fd5b80801515610885576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6967726174696f6e206964206973206e6f742076616c69642e000000000000604482015290519081900360640190fd5b610891600260066120c0565b156108e6576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6967726174696f6e206973206e6f742072657175697265642e000000000000604482015290519081900360640190fd5b6040805133600090815260036020529190912060029081018054600080516020612a24833981519152939192829184916101006001831615026000190190911604801561096a5780601f1061094857610100808354040283529182019161096a565b820191906000526020600020905b815481529060010190602001808311610956575b5050915050604051809103902060001916141580610a1b57506040805133600090815260076020529190912060029081018054600080516020612a248339815191529391928291849161010060018316150260001901909116048015610a075780601f106109e5576101008083540402835291820191610a07565b820191906000526020600020905b8154815290600101906020018083116109f3575b505091505060405180910390206000191614155b1515610a97576040805160e560020a62461bcd02815260206004820152603060248201527f53656e646572206973206e6f74206120706f74656e7469616c206d696772617460448201527f696f6e207061727469636970616e742e00000000000000000000000000000000606482015290519081900360840190fd5b6006541515610b16576040805160e560020a62461bcd02815260206004820152602560248201527f4d6967726174696f6e20746f20656d7074792073657420697320696d706f737360448201527f69626c652e000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60088054600160a060020a031916331790556009829055610b39600460066122bf565b6040517f882ea0955bd5561a49a52ef27eb0a7b8263561bd890de2ccfbc107df7724f18890600090a15050565b600160a060020a038116600090815260036020526040808220905160028281018054600080516020612a248339815191529391928291849161010060018316150260001901909116048015610bf25780601f10610bd0576101008083540402835291820191610bf2565b820191906000526020600020905b815481529060010190602001808311610bde575b505091505060405180910390206000191614151515610c5b576040805160e560020a62461bcd02815260206004820152601560248201527f456e74727920646f6573206e6f742065786973742e0000000000000000000000604482015290519081900360640190fd5b5460ff1692915050565b60408051600160a060020a0383166000908152600560205291909120600290810180546060938593600080516020612a248339815191529392829184916101006001821615026000190116048015610cf45780601f10610cd2576101008083540402835291820191610cf4565b820191906000526020600020905b815481529060010190602001808311610ce0575b505091505060405180910390206000191614151515610d82576040805160e560020a62461bcd028152602060048201526024808201527f536572766572206973206e6f7420696e20746865206d6967726174696f6e732060448201527f7365742e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600560209081526040918290206002908101805484516001821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b600954600090801515610e55576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6967726174696f6e206964206973206e6f742076616c69642e000000000000604482015290519081900360640190fd5b60095491505b5090565b60606006600001805480602002602001604051908101604052809291908181526020018280548015610eba57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e9c575b5050505050905090565b60008082801515610f1f576040805160e560020a62461bcd02815260206004820152601a60248201527f4d6967726174696f6e206964206973206e6f742076616c69642e000000000000604482015290519081900360640190fd5b60095484908114610fa0576040805160e560020a62461bcd02815260206004820152602660248201527f4d6967726174696f6e207769746820676976656e206964206973206e6f74206160448201527f63746976652e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6040805133600081815260056020529290922060029081018054600080516020612a2483398151915293919282918491610100600183161502600019019091160480156110245780601f10611002576101008083540402835291820191611024565b820191906000526020600020905b815481529060010190602001808311611010575b5050915050604051809103902060001916141515156110b2576040805160e560020a62461bcd028152602060048201526024808201527f536572766572206973206e6f7420696e20746865206d6967726174696f6e732060448201527f7365742e00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152600a602052604090205460ff161561111a576040805160e560020a62461bcd02815260206004820152601f60248201527f4d6967726174696f6e20697320616c726561647920636f6e6669726d65642e00604482015290519081900360640190fd5b336000908152600a60205260408120805460ff1916600117905594505b6004548510156111935760048054600a916000918890811061115557fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16151561118857611242565b846001019450611137565b600093505b6004548410156111ee5760048054600a91600091879081106111b657fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020805460ff1916905560019390930192611198565b60088054600160a060020a031916905561120a600260046122bf565b6112146004612438565b6040517fd54b6ad1fb1b396d056c6d670ae90d40d49ad3253a6387dc5120c45bfc51453490600090a1436001555b505050505050565b60606004600001805480602002602001604051908101604052809291908181526020018280548015610eba57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610e9c575050505050905090565b60408051600160a060020a03831660009081526003602052918220600290810180548593600080516020612a248339815191529390918291849161010060018216150260001901160480156113395780601f10611317576101008083540402835291820191611339565b820191906000526020600020905b815481529060010190602001808311611325575b50509150506040518091039020600019161415806113f3575060408051600160a060020a038316600090815260056020529190912060029081018054600080516020612a2483398151915293919282918491610100600183161502600019019091160480156113df5780601f106113bd5761010080835404028352918201916113df565b820191906000526020600020905b8154815290600101906020018083116113cb575b505091505060405180910390206000191614155b151561146f576040805160e560020a62461bcd02815260206004820152602660248201527f536572766572206973206e6f742061206d6967726174696f6e2070617274696360448201527f6970616e742e0000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5050600160a060020a03166000908152600a602052604090205460ff1690565b60025490565b61149d61192a565b15156114a857600080fd5b60005474010000000000000000000000000000000000000000900460ff161561151b576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420696e697469616c697a65642100000000000000000000000000000000604482015290519081900360640190fd5b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60606002600001805480602002602001604051908101604052809291908181526020018280548015610eba57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610e9c575050505050905090565b60015490565b6115c361192a565b15156115ce57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360008054600160a060020a0319169055565b60408051600160a060020a0383166000908152600360205291909120600290810180546060938593600080516020612a2483398151915293928291849161010060018216150260001901160480156116a75780601f106116855761010080835404028352918201916116a7565b820191906000526020600020905b815481529060010190602001808311611693575b505091505060405180910390206000191614151515611736576040805160e560020a62461bcd02815260206004820152602160248201527f536572766572206973206e6f7420696e207468652063757272656e742073657460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038316600090815260036020908152604091829020600190810180548451600293821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b60408051600160a060020a0383166000908152600760205291909120600290810180546060938593600080516020612a24833981519152939282918491610100600182161502600019011604801561183c5780601f1061181a57610100808354040283529182019161183c565b820191906000526020600020905b815481529060010190602001808311611828575b5050915050604051809103902060001916141515156118a5576040805160e560020a62461bcd02815260206004820152601d60248201527f536572766572206973206e6f7420696e20746865206e6577207365742e000000604482015290519081900360640190fd5b600160a060020a0383166000908152600760209081526040918290206002908101805484516001821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b600054600160a060020a031690565b600054600160a060020a0316331490565b60408051600160a060020a0383166000908152600360205291909120600290810180546060938593600080516020612a2483398151915293928291849161010060018216150260001901160480156119ca5780601f106119a85761010080835404028352918201916119ca565b820191906000526020600020905b8154815290600101906020018083116119b6575b505091505060405180910390206000191614151515611a59576040805160e560020a62461bcd02815260206004820152602160248201527f536572766572206973206e6f7420696e207468652063757272656e742073657460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600360209081526040918290206002908101805484516001821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b60408051600160a060020a0383166000908152600760205291909120600290810180546060938593600080516020612a248339815191529392829184916101006001821615026000190116048015611b5e5780601f10611b3c576101008083540402835291820191611b5e565b820191906000526020600020905b815481529060010190602001808311611b4a575b505091505060405180910390206000191614151515611bc7576040805160e560020a62461bcd02815260206004820152601d60248201527f536572766572206973206e6f7420696e20746865206e6577207365742e000000604482015290519081900360640190fd5b600160a060020a038316600090815260076020908152604091829020600190810180548451600293821615610100026000190190911692909204601f8101849004840283018401909452838252909290918301828280156107bf5780601f10610794576101008083540402835291602001916107bf565b60025460009060ff831610611c9d576040805160e560020a62461bcd02815260206004820152601760248201527f496e646578206973206f7574206f6620626f756e64732e000000000000000000604482015290519081900360640190fd5b6002805460ff8416908110611cae57fe5b600091825260209091200154600160a060020a031692915050565b611cd161192a565b1515611cdc57600080fd5b60408051600160a060020a0383166000908152600760205291909120600290810180548493600080516020612a24833981519152939091829184916101006001821615026000190116048015611d695780601f10611d47576101008083540402835291820191611d69565b820191906000526020600020905b815481529060010190602001808311611d55575b505091505060405180910390206000191614151515611dd2576040805160e560020a62461bcd02815260206004820152601d60248201527f536572766572206973206e6f7420696e20746865206e6577207365742e000000604482015290519081900360640190fd5b611ddd6006836124f6565b60005474010000000000000000000000000000000000000000900460ff161515611e0c57611e0c6002836124f6565b60408051600160a060020a038416815290517f7af0e7a6072f80f6e718184ff67a09d85fb6855266e2317eccbafa9a7fd15b939181900360200190a15050565b6000611e5661192a565b1515611e6157600080fd5b8151829081901515611ebd576040805160e560020a62461bcd02815260206004820152601060248201527f537472696e6720697320656d7074792e00000000000000000000000000000000604482015290519081900360640190fd5b84611ec78161261c565b1515611f1d576040805160e560020a62461bcd02815260206004820152601860248201527f5075626c6963206b6579206973206e6f742076616c69642e0000000000000000604482015290519081900360640190fd5b611f2686612623565b60408051600160a060020a038316600090815260076020529190912060029081018054600080516020612a248339815191529391928291849161010060018316150260001901909116048015611fb35780601f10611f91576101008083540402835291820191611fb3565b820191906000526020600020905b815481529060010190602001808311611f9f575b505091505060405180910390206000191614151561201b576040805160e560020a62461bcd02815260206004820152601960248201527f53657276657220697320696e20746865206e6577207365742e00000000000000604482015290519081900360640190fd5b61202760068888612690565b60005490955074010000000000000000000000000000000000000000900460ff16151561205c5761205a60028888612690565b505b60408051600160a060020a038716815290517ff7513afac0a2e66c205ba63d0a611b6ba60fbbc861693aa8c5e197aba23eb3e99181900360200190a150505050505050565b6120a961192a565b15156120b457600080fd5b6120bd816127cd565b50565b600080805b84548210156121bb578454600080516020612a248339815191529060018601906000908890869081106120f457fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002060020160405180828054600181600116156101000203166002900480156121905780601f1061216e576101008083540402835291820191612190565b820191906000526020600020905b81548152906001019060200180831161217c575b505091505060405180910390206000191614156121b057600092506122b7565b8160010191506120c5565b5060005b83548110156122b2578354600080516020612a248339815191529060018701906000908790859081106121ee57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001908152602001600020600201604051808280546001816001161561010002031660029004801561228a5780601f1061226857610100808354040283529182019161228a565b820191906000526020600020905b815481529060010190602001808311612276575b505091505060405180910390206000191614156122aa57600092506122b7565b6001016121bf565b600192505b505092915050565b6000805b83548210156123385783600101600085600001848154811015156122e357fe5b6000918252602080832090910154600160a060020a031683528201929092526040018120805460ff191681559061231d600183018261283d565b61232b60028301600061283d565b50508160010191506122c3565b82546123479085908590612881565b50600090505b835481101561243257826001016000856000018381548110151561236d57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400181208554909160018701918790859081106123a657fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190208154815460ff191660ff90911617815560018281018054612402928481019291600260001992821615610100029290920116046128cd565b50600282810180546124279284810192916000196101006001831615020116046128cd565b50505060010161234d565b50505050565b60005b8154600010156124f25781548290600019810190811061245757fe5b6000918252602090912001548254600160a060020a0390911691508290600019810190811061248257fe5b60009182526020909120018054600160a060020a03191690558154600019016124ab838261294e565b50600160a060020a0381166000908152600180840160205260408220805460ff1916815591906124dd9083018261283d565b6124eb60028301600061283d565b505061243b565b5050565b600160a060020a0381166000908152600183016020526040812054835460ff9182169260001982019290918691841690811061252e57fe5b6000918252602090912001548554600160a060020a0390911691508190869060ff861690811061255a57fe5b60009182526020808320919091018054600160a060020a031916600160a060020a0394851617905591831681526001870190915260409020805460ff191660ff858116919091179091558554869184169081106125b357fe5b600091825260208083209091018054600160a060020a0319169055600160a060020a0386168252600187810190915260408220805460ff1916815591906125fc9083018261283d565b61260a60028301600061283d565b5050845461124286600019830161294e565b5160401490565b6000816040518082805190602001908083835b602083106126555780518252601f199092019160209182019101612636565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120600160a060020a031695945050505050565b8254600090819061010011612715576040805160e560020a62461bcd02815260206004820152602b60248201527f4e756d626572206f662073657276657273206d75737420626520736d616c6c6560448201527f72207468616e203235362e000000000000000000000000000000000000000000606482015290519081900360840190fd5b61271e84612623565b8554600160a060020a0382166000908152600180890160209081526040909220805460ff191660ff90941693909317835587519394506127649392019190870190612977565b50600160a060020a03811660009081526001860160209081526040909120845161279692600290920191860190612977565b508454600181018655600086815260209020018054600160a060020a038316600160a060020a031990911617905590509392505050565b600160a060020a03811615156127e257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b50805460018160011615610100020316600290046000825580601f1061286357506120bd565b601f0160209004906000526020600020908101906120bd91906129e5565b8280548282559060005260206000209081019282156128c15760005260206000209182015b828111156128c15782548255916001019190600101906128a6565b50610e5b9291506129ff565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129065780548555612942565b8280016001018555821561294257600052602060002091601f016020900482015b82811115612942578254825591600101919060010190612927565b50610e5b9291506129e5565b815481835581811115612972576000838152602090206129729181019083016129e5565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129b857805160ff1916838001178555612942565b82800160010185558215612942579182015b828111156129425782518255916020019190600101906129ca565b6105fd91905b80821115610e5b57600081556001016129eb565b6105fd91905b80821115610e5b578054600160a060020a0319168155600101612a055600c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470a165627a7a72305820c0311e899293013c9ca1d3c7374189a7296b7f868d1f27518c01d2b328fb4d9f0029",
  "sourceMap": "896:12676:9:-;;;;;509:6:12;:19;;-1:-1:-1;;;;;;509:19:12;518:10;509:19;;;;-1:-1:-1;;;;;572:6:12;;539:40;;509:6;;539:40;896:12676:9;;;;;;",
  "deployedSourceMap": "896:12676:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4694:52;;;-1:-1:-1;;;;;4694:52:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9153:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9153:101:9;;;;;;;;-1:-1:-1;;;;;9153:101:9;;;;;;;;;;;;;;6475:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6475:175:9;-1:-1:-1;;;;;6475:175:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6475:175:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7588:415;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7588:415:9;;;;;;;5001:266;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5001:266:9;-1:-1:-1;;;;;5001:266:9;;;;;;;;;;;;;;;;;;;;;;;;6698:170;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6698:170:9;-1:-1:-1;;;;;6698:170:9;;;;;7432:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7432:125:9;;;;;;;;;;;;;;;;;;;;6907:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6907:97:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6907:97:9;;;;;;;;;;;;;;;;;8036:1081;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8036:1081:9;;;;;6315:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6315:109:9;;;;9292:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9292:169:9;-1:-1:-1;;;;;9292:169:9;;;;;;;;;;;;;;;;;;;;;;;5322:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5322:120:9;;;;9617:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9617:141:9;;;;5737:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5737:105:9;;;;4832:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4832:109:9;;;;1273:127:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1273:127:12;;;;5891:169:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5891:169:9;-1:-1:-1;;;;;5891:169:9;;;;;7248:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7248:152:9;-1:-1:-1;;;;;7248:152:9;;;;;639:70:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;639:70:12;;;;926:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;926:83:12;;;;6106:164:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6106:164:9;-1:-1:-1;;;;;6106:164:9;;;;;7049:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7049:157:9;-1:-1:-1;;;;;7049:157:9;;;;;5498:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5498:196:9;;;;;;;10401:373;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10401:373:9;-1:-1:-1;;;;;10401:373:9;;;;;9799:560;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9799:560:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9799:560:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9799:560:9;;;;-1:-1:-1;9799:560:9;-1:-1:-1;9799:560:9;;-1:-1:-1;9799:560:9;;;;;;;;-1:-1:-1;9799:560:9;;-1:-1:-1;9799:560:9;;-1:-1:-1;;;;;;;9799:560:9;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;;;;;9153::9;9232:15;;-1:-1:-1;;;;;9232:15:9;9153:101;;:::o;6475:175::-;2629:13;;;-1:-1:-1;;;;;2593:27:9;;2629:13;2593:27;;;:16;:27;;;;;;:30;;;;2577:48;;6582:5;;6562:9;;-1:-1:-1;;;;;;;;;;;2629:13:9;2593:30;2629:13;;2593:30;;2577:48;2593:16;2577:48;;;;-1:-1:-1;;2577:48:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;2569:114;;;;;;;-1:-1:-1;;;;;2569:114:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6606:27:9;;;;;;:16;:27;;;;;;;;;:16;:37;;;6599:44;;;;;;;;;;;-1:-1:-1;;6599:44:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;6606:37;;6599:44;;6606:37;6599:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6475:175;;;;:::o;7588:415::-;3250:15;;-1:-1:-1;;;;;3250:15:9;:29;3242:71;;;;;-1:-1:-1;;;;;3242:71:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7670:2;3635:16;;;3627:55;;;;;-1:-1:-1;;;;;3627:55:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;3797:32;3810:10;3822:6;3797:12;:32::i;:::-;3796:33;3788:72;;;;;-1:-1:-1;;;;;3788:72:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;4074:13;;;4054:10;4074:13;4039:26;;;:14;:26;;;;;;:10;:29;;;4023:47;;-1:-1:-1;;;;;;;;;;;4074:13:9;4039:29;;4074:13;;4039:29;;4023:47;4039:14;4023:47;;;;-1:-1:-1;;4023:47:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;;:140;;;-1:-1:-1;4150:13:9;;;4130:10;4150:13;4119:22;;;:10;:22;;;;;;:25;;;;4103:43;;-1:-1:-1;;;;;;;;;;;4150:13:9;4119:25;;4150:13;;4119:25;;4103:43;4119:10;4103:43;;;;-1:-1:-1;;4103:43:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:60;;;;;4023:140;4002:226;;;;;;;-1:-1:-1;;;;;4002:226:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7794:6;:18;:23;;7785:74;;;;;-1:-1:-1;;;;;7785:74:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7870:15;:28;;-1:-1:-1;;;;;;7870:28:9;7888:10;7870:28;;;7908:11;:16;;;7934:29;7942:12;7956:6;7934:7;:29::i;:::-;7978:18;;;;;;;3323:1;7588:415;:::o;5001:266::-;-1:-1:-1;;;;;5120:25:9;;5077:5;5120:25;;;:14;:25;;;;;;5193:13;;5120:10;5179:8;;;5163:26;;-1:-1:-1;;;;;;;;;;;5193:13:9;5179:8;;5193:13;;5179:8;;5163:26;5120:14;5163:26;;;;-1:-1:-1;;5163:26:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;5155:77;;;;;;;-1:-1:-1;;;;;5155:77:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;5249:11;;;;5001:266;-1:-1:-1;;5001:266:9:o;6698:170::-;2629:13;;;-1:-1:-1;;;;;2593:27:9;;2629:13;2593:27;;;:16;:27;;;;;;:30;;;;2577:48;;6806:6;;6786:9;;-1:-1:-1;;;;;;;;;;;2629:13:9;2593:30;2629:13;;2593:30;;2577:48;2593:16;2577:48;;;;-1:-1:-1;;2577:48:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;2569:114;;;;;;;-1:-1:-1;;;;;2569:114:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6831:27:9;;;;;;:16;:27;;;;;;;;;:30;;;;6824:37;;;;6831:16;6824:37;;;;;-1:-1:-1;;6824:37:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;6831:30;;6824:37;;6831:30;6824:37;;;;;;;;;;;;;;;;;;;;;;;;7432:125;7491:11;;7513:7;;3635:16;;;3627:55;;;;;-1:-1:-1;;;;;3627:55:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7539:11;;7532:18;;3692:1;7432:125;;:::o;6907:97::-;6958:9;6986:6;:11;;6979:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6979:18:9;;;;;;;;;;;;;;;;;;;;;;;6907:97;:::o;8036:1081::-;8356:6;;8102:2;3635:16;;;3627:55;;;;;-1:-1:-1;;;;;3627:55:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;3452:11;;8124:2;;3452:17;;3444:68;;;;;-1:-1:-1;;;;;3444:68:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2629:13;;;8145:10;2629:13;2593:27;;;:16;:27;;;;;;:30;;;;2577:48;;-1:-1:-1;;;;;;;;;;;2629:13:9;2593:30;;2629:13;;2593:30;;2577:48;2593:16;2577:48;;;;-1:-1:-1;;2577:48:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;2569:114;;;;;;;-1:-1:-1;;;;;2569:114:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8199:10;8176:34;;;;:22;:34;;;;;;;;8175:35;8167:79;;;;;-1:-1:-1;;;;;8167:79:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;8279:10;8256:34;;;;:22;:34;;;;;:41;;-1:-1:-1;;8256:41:9;8293:4;8256:41;;;:34;-1:-1:-1;8351:166:9;8372:12;:24;8368:28;;8351:166;;;8445:12;:20;;8422:22;;:44;;8463:1;;8445:20;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8445:20:9;8422:44;;;;;;;;;;;;;;;8421:45;8417:90;;;8486:7;;8417:90;8398:3;;;;;8351:166;;;8599:1;8590:10;;8585:128;8606:12;:24;8602:28;;8585:128;;;8681:12;:20;;8658:22;;:44;;8699:1;;8681:20;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8681:20:9;8658:44;;;;;;;;;;;;8651:51;;-1:-1:-1;;8651:51:9;;;8681:20;8632:3;;;;;8585:128;;;8729:15;8722:22;;-1:-1:-1;;;;;;8722:22:9;;;8807:33;8815:10;8827:12;8807:7;:33::i;:::-;8908:22;8917:12;8908:8;:22::i;:::-;8986:20;;;;;;;9098:12;9074:21;:36;2693:1;3522;3692;8036:1081;;;;:::o;6315:109::-;6372:9;6400:12;:17;;6393:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6393:24:9;;;;;;;;;;;;;;;;;;;;;;6315:109;:::o;9292:169::-;4442:13;;;-1:-1:-1;;;;;4408:25:9;;9398:4;4408:25;;;:14;:25;;;;;:10;:28;;;4392:46;;9378:9;;-1:-1:-1;;;;;;;;;;;4442:13:9;;;;;4408:28;;4392:46;4408:14;4392:46;;;;-1:-1:-1;;4392:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;;:144;;;-1:-1:-1;4523:13:9;;;-1:-1:-1;;;;;4487:27:9;;4523:13;4487:27;;;:16;:27;;;;;;:30;;;;4471:48;;-1:-1:-1;;;;;;;;;;;4523:13:9;4487:30;;4523:13;;4487:30;;4471:48;4487:16;4471:48;;;;-1:-1:-1;;4471:48:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;4392:144;4371:220;;;;;;;-1:-1:-1;;;;;4371:220:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;9421:33:9;;;;;:22;:33;;;;;;;;;9292:169::o;5322:120::-;5412:10;:22;5322:120;:::o;9617:141::-;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;9687:13:9;;;;;;;9686:14;9678:43;;;;;-1:-1:-1;;;;;9678:43:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;9731:13;:20;;-1:-1:-1;;9731:20:9;;;;;9617:141::o;5737:105::-;5792:9;5820:10;:15;;5813:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5813:22:9;;;;;;;;;;;;;;;;;;;;;;5737:105;:::o;4832:109::-;4913:21;;4832:109;:::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;5891:169:9:-;2381:13;;;-1:-1:-1;;;;;2347:25:9;;2381:13;2347:25;;;:14;:25;;;;;;:10;:28;;;2331:46;;5994:5;;5974:9;;-1:-1:-1;;;;;;;;;;;2381:13:9;2347:28;2381:13;;2347:28;;2331:46;2347:14;2331:46;;;;-1:-1:-1;;2331:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;;2323:109;;;;;;;-1:-1:-1;;;;;2323:109:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6018:25:9;;;;;;:14;:25;;;;;;;;;:14;:35;;;6011:42;;;;6018:10;6011:42;;;;;;-1:-1:-1;;6011:42:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;6018:35;;6011:42;;6018:35;6011:42;;;;;;;;;;;;;;;;;;;;;;;;7248:152;2862:13;;;-1:-1:-1;;;;;2832:21:9;;2862:13;2832:21;;;:10;:21;;;;;;:24;;;;2816:42;;7344:6;;7324:9;;-1:-1:-1;;;;;;;;;;;2862:13:9;2832:24;2862:13;;2832:24;;2816:42;2832:10;2816:42;;;;-1:-1:-1;;2816:42:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;2808:101;;;;;;;-1:-1:-1;;;;;2808:101:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7369:21:9;;;;;;:10;:21;;;;;;;;;:24;;;;7362:31;;;;7369:10;7362:31;;;;;-1:-1:-1;;7362:31:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7369:24;;7362:31;;7369:24;7362:31;;;;;;;;;;;;;;;;;;;;;;;;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;6106:164:9:-;2381:13;;;-1:-1:-1;;;;;2347:25:9;;2381:13;2347:25;;;:14;:25;;;;;;:10;:28;;;2331:46;;6210:6;;6190:9;;-1:-1:-1;;;;;;;;;;;2381:13:9;2347:28;2381:13;;2347:28;;2331:46;2347:14;2331:46;;;;-1:-1:-1;;2331:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;;2323:109;;;;;;;-1:-1:-1;;;;;2323:109:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6235:25:9;;;;;;:14;:25;;;;;;;;;:10;:28;;;6228:35;;;;6235:14;6228:35;;;;;-1:-1:-1;;6228:35:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;6235:28;;6228:35;;6235:28;6228:35;;;;;;;;;;;;;;;;;;;;;;;;7049:157;2862:13;;;-1:-1:-1;;;;;2832:21:9;;2862:13;2832:21;;;:10;:21;;;;;;:24;;;;2816:42;;7144:5;;7124:9;;-1:-1:-1;;;;;;;;;;;2862:13:9;2832:24;2862:13;;2832:24;;2816:42;2832:10;2816:42;;;;-1:-1:-1;;2816:42:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;2808:101;;;;;;;-1:-1:-1;;;;;2808:101:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7168:21:9;;;;;;:10;:21;;;;;;;;;:10;:31;;;7161:38;;;;;;;;;;;-1:-1:-1;;7161:38:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7168:31;;7161:38;;7168:31;7161:38;;;;;;;;;;;;;;;;;;;;;;;;5498:196;5598:10;:22;5563:7;;5590:30;;;;5582:66;;;;;-1:-1:-1;;;;;5582:66:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;5665:10;:22;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5665:22:9;;5498:196;-1:-1:-1;;5498:196:9:o;10401:373::-;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;2862:13:9;;;-1:-1:-1;;;;;2832:21:9;;2862:13;2832:21;;;:10;:21;;;;;;:24;;;;2816:42;;10473:9;;-1:-1:-1;;;;;;;;;;;2862:13:9;;;;;2832:24;;2816:42;2832:10;2816:42;;;;-1:-1:-1;;2816:42:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;2808:101;;;;;;;-1:-1:-1;;;;;2808:101:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10537:32;10551:6;10559:9;10537:13;:32::i;:::-;10628:13;;;;;;;10627:14;10623:81;;;10657:36;10671:10;10683:9;10657:13;:36::i;:::-;10740:27;;;-1:-1:-1;;;;;10740:27:9;;;;;;;;;;;;;;;840:1:12;10401:373:9;:::o;9799:560::-;10076:17;824:9:12;:7;:9::i;:::-;816:18;;;;;;;;1964:16:9;;9922:11;;;;1964:21;;1956:50;;;;;-1:-1:-1;;;;;1956:50:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;9957:15;2133:28;2145:15;2133:11;:28::i;:::-;2125:65;;;;;;;-1:-1:-1;;;;;2125:65:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;9996:31;10011:15;9996:14;:31::i;:::-;3091:13;;;-1:-1:-1;;;;;3061:21:9;;3091:13;3061:21;;;:10;:21;;;;;;:24;;;;3045:42;;-1:-1:-1;;;;;;;;;;;3091:13:9;3061:24;;3091:13;;3061:24;;3045:42;3061:10;3045:42;;;;-1:-1:-1;;3045:42:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;3037:97;;;;;;;-1:-1:-1;;;;;3037:97:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10096:49;10108:6;10116:15;10133:11;10096;:49::i;:::-;10198:13;;10076:69;;-1:-1:-1;10198:13:9;;;;;10197:14;10193:98;;;10227:53;10239:10;10251:15;10268:11;10227;:53::i;:::-;;10193:98;10327:25;;;-1:-1:-1;;;;;10327:25:9;;;;;;;;;;;;;;;2200:1;2016;840::12;;9799:560:9;;;:::o;1561:101:12:-;824:9;:7;:9::i;:::-;816:18;;;;;;;;1629:28;1648:8;1629:18;:28::i;:::-;1561:101;:::o;11907:490:9:-;11987:4;;;12003:179;12024:16;;12020:20;;12003:179;;;12090:12;;-1:-1:-1;;;;;;;;;;;12112:13:9;12081:8;;;;12112:13;;12090:4;;12100:1;;12090:12;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12090:12:9;-1:-1:-1;;;;;12081:22:9;-1:-1:-1;;;;;12081:22:9;;;;;;;;;;;;:25;;12065:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:60;;;;12061:111;;;12152:5;12145:12;;;;12061:111;12042:3;;;;;12003:179;;;-1:-1:-1;12205:1:9;12191:179;12212:16;;12208:20;;12191:179;;;12278:12;;-1:-1:-1;;;;;;;;;;;12300:13:9;12269:8;;;;12300:13;;12278:4;;12288:1;;12278:12;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12278:12:9;-1:-1:-1;;;;;12269:22:9;-1:-1:-1;;;;;12269:22:9;;;;;;;;;;;;:25;;12253:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:60;;;;12249:111;;;12340:5;12333:12;;;;12249:111;12230:3;;12191:179;;;12386:4;12379:11;;11907:490;;;;;;;:::o;11215:332::-;11291:6;;11286:98;11307:16;;11303:20;;11286:98;;;11351:4;:8;;:22;11360:4;:9;;11370:1;11360:12;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11360:12:9;11351:22;;;;;;;;;;;;11344:29;;-1:-1:-1;;11344:29:9;;;11351:22;11344:29;11360:12;11344:29;;11360:12;11344:29;:::i;:::-;;;;;;;:::i;:::-;;;11325:3;;;;;11286:98;;;11394:21;;;;:4;;11406;;11394:21;:::i;:::-;;11439:1;11430:10;;11425:116;11446:16;;11442:20;;11425:116;;;11508:4;:8;;:22;11517:4;:9;;11527:1;11517:12;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11517:12:9;11508:22;;;;;;;;;;;;11492:12;;11508:22;;11517:12;11483:8;;;:4;;11502:1;;11492:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11492:12:9;11483:22;;;;;;;;;;;;:47;;;;-1:-1:-1;;11483:47:9;;;;;;;;11492:12;11483:47;;;;;;;;;;;;;-1:-1:-1;;11483:47:9;;;;11492:12;11483:47;;;;;;;;:::i;:::-;-1:-1:-1;11483:47:9;;;;;;;;;;;;;-1:-1:-1;;11483:47:9;;;;;;;;;;:::i;:::-;-1:-1:-1;;;11464:3:9;;11425:116;;;11215:332;;;;:::o;11572:301::-;11667:17;11625:242;11632:15;;11650:1;-1:-1:-1;11625:242:9;;;11696:15;;11687:3;;-1:-1:-1;;11696:19:9;;;11687:29;;;;;;;;;;;;;;;;11746:15;;-1:-1:-1;;;;;11687:29:9;;;;-1:-1:-1;11737:3:9;;-1:-1:-1;;11746:19:9;;;11737:29;;;;;;;;;;;;;;;11730:36;;-1:-1:-1;;;;;;11730:36:9;;;11798:15;;-1:-1:-1;;11798:19:9;11780:37;11798:3;:19;11780:37;:::i;:::-;-1:-1:-1;;;;;;11838:18:9;;;;;;:7;;;;:18;;;;;11831:25;;-1:-1:-1;;11831:25:9;;;11838:18;;11831:25;;;;11838:18;11831:25;:::i;:::-;;;;;;;:::i;:::-;;;11625:242;;;11572:301;;:::o;13028:542::-;-1:-1:-1;;;;;13188:18:9;;13161;13188;;;:7;;;:18;;;;;:24;13247:15;;13188:24;;;;;-1:-1:-1;;13241:26:9;;;13161:18;;13188:3;;13301:19;;;;;;;;;;;;;;;;;;;13330:22;;-1:-1:-1;;;;;13301:19:9;;;;-1:-1:-1;13301:19:9;;13330:3;;:22;;;;;;;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;;;;13330:38:9;-1:-1:-1;;;;;13330:38:9;;;;;;13378:22;;;;;-1:-1:-1;13378:7:9;;:22;;;;;;:43;;-1:-1:-1;;13378:43:9;;;;;;;;;;;;13482:19;;13378:7;;13482:19;;;;;;;;;;;;;;;;;;;;13475:26;;-1:-1:-1;;;;;;13475:26:9;;;-1:-1:-1;;;;;13518:18:9;;;;13475:26;13518:7;;;:18;;;;;;13511:25;;-1:-1:-1;;13511:25:9;;;13518:18;13482:19;13511:25;;;;13482:19;13511:25;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;13546:17:9;;;:3;-1:-1:-1;;13546:17:9;;;:::i;11045:124::-;11134:22;11160:2;11134:28;;11045:124::o;10821:190::-;10890:7;10939:15;10929:26;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;10929:26:9;;;;;;;;;;-1:-1:-1;;;;;10924:79:9;;10821:190;-1:-1:-1;;;;;10821:190:9:o;12440:542::-;12624:15;;12538:7;;;;12642:3;-1:-1:-1;12616:77:9;;;;;-1:-1:-1;;;;;12616:77:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12724:31;12739:15;12724:14;:31::i;:::-;12798:15;;-1:-1:-1;;;;;12765:18:9;;12798:8;12765:18;;;:7;;;;:18;;;;;;;;:49;;-1:-1:-1;;12765:49:9;;;;;;;;;;;12824:46;;12765:18;;-1:-1:-1;12824:46:9;;:28;;;:46;;;;;:::i;:::-;-1:-1:-1;;;;;;12880:18:9;;;;;;:7;;;:18;;;;;;;;:35;;;;:21;;;;;:35;;;;:::i;:::-;-1:-1:-1;27:10;;39:1;23:18;;45:23;;12925:8:9;:24;;;;;;;;;-1:-1:-1;;;;;12925:24:9;;-1:-1:-1;;;;;;12925:24:9;;;;;;12939:9;-1:-1:-1;12440:542:9;;;;;:::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;896:12676:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;896:12676:9;;;-1:-1:-1;896:12676:9;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;896:12676:9;;;-1:-1:-1;896:12676:9;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;896:12676:9;;;;;;",
  "source": "//! The KeyServerSet contract. Owned version with migration support.\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 \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"../interfaces/KeyServerSet.sol\";\n\n\n/// Single-owned KeyServerSet with migration support.\ncontract OwnedKeyServerSetWithMigration is Ownable, KeyServerSetWithMigration {\n    \n    struct KeyServer {\n        /// Index in the keyServersList.\n        uint8 index;\n        /// Public key of key server.\n        bytes publicKey;\n        /// IP address of key server.\n        string ip;\n    }\n\n    struct Set {\n        /// Public keys of all active key servers.\n        address[] list;\n        /// Mapping public key => server IP address.\n        mapping(address => KeyServer) map;\n    }\n\n    /// Is initialized.\n    bool isInitialized;\n    /// Block at which current\n    uint256 currentSetChangeBlock;\n    /// Current key servers set.\n    Set currentSet;\n    /// Migration key servers set.\n    Set migrationSet;\n    /// New key servers set.\n    Set newSet;\n    /// Migration master.\n    address migrationMaster;\n    /// Migration id.\n    bytes32 migrationId;\n    /// Required migration confirmations.\n    mapping(address => bool) migrationConfirmations;\n\n    modifier notAnEmptyString(string value) {\n        bytes memory castValue = bytes(value);\n        require(castValue.length != 0, \"String is empty.\");\n        _;\n    }\n\n    /// Only if valid public is passed\n    modifier isValidPublic(bytes keyServerPublic) {\n        require(checkPublic(keyServerPublic), \"Public key is not valid.\");\n        _;\n    }\n\n    /// Only run if server is currently on current set.\n    modifier isOnCurrentSet(address keyServer) {\n        require(keccak256(bytes(currentSet.map[keyServer].ip)) != keccak256(\"\"), \"Server is not in the current set.\");\n        _;\n    }\n\n    /// Only run if server is currently on migration set.\n    modifier isOnMigrationSet(address keyServer) {\n        require(keccak256(bytes(migrationSet.map[keyServer].ip)) != keccak256(\"\"), \"Server is not in the migrations set.\");\n        _;\n    }\n\n    /// Only run if server is currently on new set.\n    modifier isOnNewSet(address keyServer) {\n        require(keccak256(bytes(newSet.map[keyServer].ip)) != keccak256(\"\"), \"Server is not in the new set.\");\n        _;\n    }\n\n    /// Only run if server is currently on new set.\n    modifier isNotOnNewSet(address keyServer) {\n        require(keccak256(bytes(newSet.map[keyServer].ip)) == keccak256(\"\"), \"Server is in the new set.\");\n        _;\n    }\n\n    /// Only when no active migration process.\n    modifier noActiveMigration {\n        require(migrationMaster == address(0), \"There is an active migration.\");\n        _;\n    }\n\n    /// Only when migration with given id is in progress.\n    modifier isActiveMigration(bytes32 id) {\n        require(migrationId == id, \"Migration with given id is not active.\");\n        _;\n    }\n\n    /// Only when migration id is valid.\n    modifier isValidMigrationId(bytes32 id) {\n        require(id != bytes32(0), \"Migration id is not valid.\");\n        _;\n    }\n\n    /// Only when migration is required.\n    modifier whenMigrationRequired {\n        require(!areEqualSets(currentSet, newSet), \"Migration is not required.\");\n        _;\n    }\n\n    /// Only run when sender is potential participant of migration.\n    modifier isPossibleMigrationParticipant {\n        require(\n            keccak256(bytes(currentSet.map[msg.sender].ip)) != keccak256(\"\") ||\n            keccak256(bytes(newSet.map[msg.sender].ip)) != keccak256(\"\"),\n            \"Sender is not a potential migration participant.\");\n        _;\n    }\n\n    /// Only run when sender is participant of migration.\n    modifier isMigrationParticipant(address keyServer) {\n        require(\n            keccak256(bytes(currentSet.map[keyServer].ip)) != keccak256(\"\") ||\n            keccak256(bytes(migrationSet.map[keyServer].ip)) != keccak256(\"\"),\n            \"Server is not a migration participant.\");\n        _;\n    }\n\n    /// We do not support direct payments.\n    function() public payable {\n        revert(\"Contract does not support direct payments.\");\n    }\n\n    /// Get number of block when current set has been changed last time.\n    function getCurrentLastChange() external view returns (uint256) {\n        return currentSetChangeBlock;\n    }\n\n    /// Get index of given key server in current set.\n    function getCurrentKeyServerIndex(address keyServer) external view returns (uint8) {\n        KeyServer storage entry = currentSet.map[keyServer];\n        require(keccak256(bytes(entry.ip)) != keccak256(\"\"), \"Entry does not exist.\");\n        return entry.index;\n    }\n\n    /// Get count of key servers in current set.\n    function getCurrentKeyServersCount() external view returns (uint8) {\n        return uint8(currentSet.list.length);\n    }\n\n    /// Get address of key server in current set.\n    function getCurrentKeyServer(uint8 index) external view returns (address) {\n        require(index < currentSet.list.length, \"Index is out of bounds.\");\n        return currentSet.list[index];\n    }\n\n    /// Get all current key servers.\n    function getCurrentKeyServers() external view returns (address[]) {\n        return currentSet.list;\n    }\n\n    /// Get current key server public key.\n    function getCurrentKeyServerPublic(address keyServer) external view isOnCurrentSet(keyServer) returns (bytes) {\n        return currentSet.map[keyServer].publicKey;\n    }\n\n    /// Get current key server address.\n    function getCurrentKeyServerAddress(address keyServer) external view isOnCurrentSet(keyServer) returns (string) {\n        return currentSet.map[keyServer].ip;\n    }\n\n    /// Get all migration key servers.\n    function getMigrationKeyServers() external view returns (address[]) {\n        return migrationSet.list;\n    }\n\n    /// Get migration key server public key.\n    function getMigrationKeyServerPublic(address keyServer) external view isOnMigrationSet(keyServer) returns (bytes) {\n        return migrationSet.map[keyServer].publicKey;\n    }\n\n    /// Get migration key server address.\n    function getMigrationKeyServerAddress(address keyServer) external view isOnMigrationSet(keyServer) returns (string) {\n        return migrationSet.map[keyServer].ip;\n    }\n\n    /// Get all new key servers.\n    function getNewKeyServers() external view returns (address[]) {\n        return newSet.list;\n    }\n\n    /// Get new key server public key.\n    function getNewKeyServerPublic(address keyServer) external view isOnNewSet(keyServer) returns (bytes) {\n        return newSet.map[keyServer].publicKey;\n    }\n\n    /// Get new key server address.\n    function getNewKeyServerAddress(address keyServer) external view isOnNewSet(keyServer) returns (string) {\n        return newSet.map[keyServer].ip;\n    }\n\n    /// Get migration id.\n    function getMigrationId() external view isValidMigrationId(migrationId) returns (bytes32) {\n        return migrationId;\n    }\n\n    /// Start migration.\n    function startMigration(bytes32 id) external noActiveMigration isValidMigrationId(id) whenMigrationRequired isPossibleMigrationParticipant {\n        // migration to empty set is impossible\n        require (newSet.list.length != 0, \"Migration to empty set is impossible.\");\n\n        migrationMaster = msg.sender;\n        migrationId = id;\n        copySet(migrationSet, newSet);\n        emit MigrationStarted();\n    }\n\n    /// Confirm migration.\n    function confirmMigration(bytes32 id) external isValidMigrationId(id) isActiveMigration(id) isOnMigrationSet(msg.sender) {\n        require(!migrationConfirmations[msg.sender], \"Migration is already confirmed.\");\n        migrationConfirmations[msg.sender] = true;\n\n        // check if migration is completed\n        for (uint j = 0; j < migrationSet.list.length; ++j) {\n            if (!migrationConfirmations[migrationSet.list[j]]) {\n                return;\n            }\n        }\n\n        // migration is completed => delete confirmations\n        for (uint m = 0; m < migrationSet.list.length; ++m) {\n            delete migrationConfirmations[migrationSet.list[m]];\n        }\n        delete migrationMaster;\n\n        // ...and copy migration set to current set\n        copySet(currentSet, migrationSet);\n\n        // ...and also delete entries from migration set\n        clearSet(migrationSet);\n\n        // ...and fire completion event\n        emit MigrationCompleted();\n\n        // ...and update current server set change block\n        currentSetChangeBlock = block.number;\n    }\n\n    /// Get migration master.\n    function getMigrationMaster() external view returns (address) {\n        return migrationMaster;\n    }\n\n    /// Is migration confirmed.\n    function isMigrationConfirmed(address keyServer) external view isMigrationParticipant(keyServer) returns (bool) {\n        return migrationConfirmations[keyServer];\n    }\n\n    /// Complete initialization. Before this function is called, all calls to addKeyServer/removeKeyServer\n    /// affect both newSet and currentSet.\n    function completeInitialization() public onlyOwner {\n        require(!isInitialized, \"Not initialized!\");\n        isInitialized = true;\n    }\n\n    /// Add new key server to set.\n    function addKeyServer(bytes keyServerPublic, string keyServerIp)\n        public\n        onlyOwner\n        notAnEmptyString(keyServerIp)\n        isValidPublic(keyServerPublic)\n        isNotOnNewSet(computeAddress(keyServerPublic))\n    {\n        // append to the new set\n        address keyServer = appendToSet(newSet, keyServerPublic, keyServerIp);\n        // also append to current set\n        if (!isInitialized) {\n            appendToSet(currentSet, keyServerPublic, keyServerIp);\n        }\n        // fire event\n        emit KeyServerAdded(keyServer);\n    }\n\n    /// Remove key server from set.\n    function removeKeyServer(address keyServer) public onlyOwner isOnNewSet(keyServer) {\n        // remove element from the new set\n        removeFromSet(newSet, keyServer);\n        // also remove from the current set\n        if (!isInitialized) {\n            removeFromSet(currentSet, keyServer);\n        }\n        // fire event\n        emit KeyServerRemoved(keyServer);\n    }\n\n    /// Compute address from public key.\n    function computeAddress(bytes keyServerPublic) private pure returns (address) {\n        return address(uint(keccak256(keyServerPublic)) & 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);\n    }\n\n    /// 'Check' public key.\n    function checkPublic(bytes keyServerPublic) private pure returns (bool) {\n        return keyServerPublic.length == 64;\n    }\n\n    /// Copy set (assignment operator).\n    function copySet(Set storage set1, Set storage set2) private {\n        for (uint i = 0; i < set1.list.length; ++i) {\n            delete set1.map[set1.list[i]];\n        }\n\n        set1.list = set2.list;\n        for (uint j = 0; j < set1.list.length; ++j) {\n            set1.map[set1.list[j]] = set2.map[set1.list[j]];\n        }\n    }\n\n    /// Clear set.\n    function clearSet(Set storage set) private {\n        while (set.list.length > 0) {\n            address keyServer = set.list[set.list.length - 1];\n            delete set.list[set.list.length - 1];\n            set.list.length = set.list.length - 1;\n            delete set.map[keyServer];\n        }\n    }\n\n    /// Are two sets equal?\n    function areEqualSets(Set storage set1, Set storage set2) private view returns (bool) {\n        for (uint i = 0; i < set1.list.length; ++i) {\n            if (keccak256(bytes(set2.map[set1.list[i]].ip)) == keccak256(\"\")) {\n                return false;\n            }\n        }\n        for (uint j = 0; j < set2.list.length; ++j) {\n            if (keccak256(bytes(set1.map[set2.list[j]].ip)) == keccak256(\"\")) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    /// Append new key serer to set.\n    function appendToSet(Set storage set, bytes keyServerPublic, string keyServerIp) private returns (address) {\n        // we do not support > 256 key servers in the list\n        require(set.list.length < 256, \"Number of servers must be smaller than 256.\");\n\n        address keyServer = computeAddress(keyServerPublic);\n        set.map[keyServer].index = uint8(set.list.length);\n        set.map[keyServer].publicKey = keyServerPublic;\n        set.map[keyServer].ip = keyServerIp;\n        set.list.push(keyServer);\n        return keyServer;\n    }\n\n    /// Remove existing key server set.\n    function removeFromSet(Set storage set, address keyServer) private {\n        // swap list elements (removedIndex, lastIndex)\n        uint8 removedIndex = uint8(set.map[keyServer].index);\n        uint8 lastIndex = uint8(set.list.length) - 1;\n        address lastKeyServer = set.list[lastIndex];\n        set.list[removedIndex] = lastKeyServer;\n        set.map[lastKeyServer].index = removedIndex;\n        // remove element from list and map\n        delete set.list[lastIndex];\n        delete set.map[keyServer];\n        set.list.length--;\n    }\n}",
  "sourcePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/set/OwnedKeyServerSetWithMigration.sol",
  "ast": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/set/OwnedKeyServerSetWithMigration.sol",
    "exportedSymbols": {
      "OwnedKeyServerSetWithMigration": [
        4653
      ]
    },
    "id": 4654,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3514,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "709:24:9"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 3515,
        "nodeType": "ImportDirective",
        "scope": 4654,
        "sourceUnit": 4824,
        "src": "735:63:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/KeyServerSet.sol",
        "file": "../interfaces/KeyServerSet.sol",
        "id": 3516,
        "nodeType": "ImportDirective",
        "scope": 4654,
        "sourceUnit": 577,
        "src": "799:40:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3517,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4823,
              "src": "939:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4823",
                "typeString": "contract Ownable"
              }
            },
            "id": 3518,
            "nodeType": "InheritanceSpecifier",
            "src": "939:7:9"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3519,
              "name": "KeyServerSetWithMigration",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 576,
              "src": "948:25:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KeyServerSetWithMigration_$576",
                "typeString": "contract KeyServerSetWithMigration"
              }
            },
            "id": 3520,
            "nodeType": "InheritanceSpecifier",
            "src": "948:25:9"
          }
        ],
        "contractDependencies": [
          576,
          4823
        ],
        "contractKind": "contract",
        "documentation": "Single-owned KeyServerSet with migration support.",
        "fullyImplemented": true,
        "id": 4653,
        "linearizedBaseContracts": [
          4653,
          576,
          4823
        ],
        "name": "OwnedKeyServerSetWithMigration",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "OwnedKeyServerSetWithMigration.KeyServer",
            "id": 3527,
            "members": [
              {
                "constant": false,
                "id": 3522,
                "name": "index",
                "nodeType": "VariableDeclaration",
                "scope": 3527,
                "src": "1053:11:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 3521,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1053:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3524,
                "name": "publicKey",
                "nodeType": "VariableDeclaration",
                "scope": 3527,
                "src": "1112:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 3523,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1112:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3526,
                "name": "ip",
                "nodeType": "VariableDeclaration",
                "scope": 3527,
                "src": "1175:9:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3525,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1175:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "KeyServer",
            "nodeType": "StructDefinition",
            "scope": 4653,
            "src": "985:206:9",
            "visibility": "public"
          },
          {
            "canonicalName": "OwnedKeyServerSetWithMigration.Set",
            "id": 3535,
            "members": [
              {
                "constant": false,
                "id": 3530,
                "name": "list",
                "nodeType": "VariableDeclaration",
                "scope": 3535,
                "src": "1269:14:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3528,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1269:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3529,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1269:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3534,
                "name": "map",
                "nodeType": "VariableDeclaration",
                "scope": 3535,
                "src": "1346:33:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                  "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer)"
                },
                "typeName": {
                  "id": 3533,
                  "keyType": {
                    "id": 3531,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1354:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1346:29:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                    "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 3532,
                    "name": "KeyServer",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3527,
                    "src": "1365:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Set",
            "nodeType": "StructDefinition",
            "scope": 4653,
            "src": "1197:189:9",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3537,
            "name": "isInitialized",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1416:18:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 3536,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1416:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3539,
            "name": "currentSetChangeBlock",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1471:29:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3538,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1471:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3541,
            "name": "currentSet",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1539:14:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Set_$3535_storage",
              "typeString": "struct OwnedKeyServerSetWithMigration.Set"
            },
            "typeName": {
              "contractScope": null,
              "id": 3540,
              "name": "Set",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3535,
              "src": "1539:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                "typeString": "struct OwnedKeyServerSetWithMigration.Set"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3543,
            "name": "migrationSet",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1594:16:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Set_$3535_storage",
              "typeString": "struct OwnedKeyServerSetWithMigration.Set"
            },
            "typeName": {
              "contractScope": null,
              "id": 3542,
              "name": "Set",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3535,
              "src": "1594:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                "typeString": "struct OwnedKeyServerSetWithMigration.Set"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3545,
            "name": "newSet",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1645:10:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Set_$3535_storage",
              "typeString": "struct OwnedKeyServerSetWithMigration.Set"
            },
            "typeName": {
              "contractScope": null,
              "id": 3544,
              "name": "Set",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3535,
              "src": "1645:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                "typeString": "struct OwnedKeyServerSetWithMigration.Set"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3547,
            "name": "migrationMaster",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1687:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3546,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1687:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3549,
            "name": "migrationId",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1738:19:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 3548,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1738:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3553,
            "name": "migrationConfirmations",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1805:47:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 3552,
              "keyType": {
                "id": 3550,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1813:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1805:24:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 3551,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1824:4:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3572,
              "nodeType": "Block",
              "src": "1899:125:9",
              "statements": [
                {
                  "assignments": [
                    3558
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3558,
                      "name": "castValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 3573,
                      "src": "1909:22:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3557,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1909:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3562,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3560,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3555,
                        "src": "1940:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1934:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                        "typeString": "type(bytes storage pointer)"
                      },
                      "typeName": "bytes"
                    },
                    "id": 3561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1934:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1909:37:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3564,
                            "name": "castValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3558,
                            "src": "1964:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1964:16:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1984:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1964:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "537472696e6720697320656d7074792e",
                        "id": 3568,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1987:18:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_aeb6d643af0369a6363fb8576af2305f659b71987766fc28e085f59ce3be38a7",
                          "typeString": "literal_string \"String is empty.\""
                        },
                        "value": "String is empty."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_aeb6d643af0369a6363fb8576af2305f659b71987766fc28e085f59ce3be38a7",
                          "typeString": "literal_string \"String is empty.\""
                        }
                      ],
                      "id": 3563,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "1956:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1956:50:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3570,
                  "nodeType": "ExpressionStatement",
                  "src": "1956:50:9"
                },
                {
                  "id": 3571,
                  "nodeType": "PlaceholderStatement",
                  "src": "2016:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 3573,
            "name": "notAnEmptyString",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3555,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 3573,
                  "src": "1885:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3554,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1885:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1884:14:9"
            },
            "src": "1859:165:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3585,
              "nodeType": "Block",
              "src": "2115:93:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3579,
                            "name": "keyServerPublic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3575,
                            "src": "2145:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3578,
                          "name": "checkPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4312,
                          "src": "2133:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes memory) pure returns (bool)"
                          }
                        },
                        "id": 3580,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2133:28:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5075626c6963206b6579206973206e6f742076616c69642e",
                        "id": 3581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2163:26:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7da3fda962f2872ab8782297844eb72485ecb2e74537ffcfb05b9e5c3c717e43",
                          "typeString": "literal_string \"Public key is not valid.\""
                        },
                        "value": "Public key is not valid."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7da3fda962f2872ab8782297844eb72485ecb2e74537ffcfb05b9e5c3c717e43",
                          "typeString": "literal_string \"Public key is not valid.\""
                        }
                      ],
                      "id": 3577,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2125:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2125:65:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3583,
                  "nodeType": "ExpressionStatement",
                  "src": "2125:65:9"
                },
                {
                  "id": 3584,
                  "nodeType": "PlaceholderStatement",
                  "src": "2200:1:9"
                }
              ]
            },
            "documentation": "Only if valid public is passed",
            "id": 3586,
            "name": "isValidPublic",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3575,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 3586,
                  "src": "2092:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3574,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2092:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2091:23:9"
            },
            "src": "2069:139:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3608,
              "nodeType": "Block",
              "src": "2313:137:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3593,
                                        "name": "currentSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3541,
                                        "src": "2347:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                        }
                                      },
                                      "id": 3594,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "map",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3534,
                                      "src": "2347:14:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                      }
                                    },
                                    "id": 3596,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3595,
                                      "name": "keyServer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3588,
                                      "src": "2362:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2347:25:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                    }
                                  },
                                  "id": 3597,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "2347:28:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2341:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2341:35:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3591,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2331:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2331:46:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2391:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3600,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2381:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2381:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2331:63:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536572766572206973206e6f7420696e207468652063757272656e74207365742e",
                        "id": 3604,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2396:35:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2a149919b46c505b823fb2ba63c3de4f4c8b8e08633493aef048705acb1b1924",
                          "typeString": "literal_string \"Server is not in the current set.\""
                        },
                        "value": "Server is not in the current set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2a149919b46c505b823fb2ba63c3de4f4c8b8e08633493aef048705acb1b1924",
                          "typeString": "literal_string \"Server is not in the current set.\""
                        }
                      ],
                      "id": 3590,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2323:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2323:109:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3606,
                  "nodeType": "ExpressionStatement",
                  "src": "2323:109:9"
                },
                {
                  "id": 3607,
                  "nodeType": "PlaceholderStatement",
                  "src": "2442:1:9"
                }
              ]
            },
            "documentation": "Only run if server is currently on current set.",
            "id": 3609,
            "name": "isOnCurrentSet",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3588,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3609,
                  "src": "2294:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3587,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2294:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2293:19:9"
            },
            "src": "2270:180:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3631,
              "nodeType": "Block",
              "src": "2559:142:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3616,
                                        "name": "migrationSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3543,
                                        "src": "2593:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                        }
                                      },
                                      "id": 3617,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "map",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3534,
                                      "src": "2593:16:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                      }
                                    },
                                    "id": 3619,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3618,
                                      "name": "keyServer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3611,
                                      "src": "2610:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2593:27:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                    }
                                  },
                                  "id": 3620,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "2593:30:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2587:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2587:37:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3614,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2577:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2577:48:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2639:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3623,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2629:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2629:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2577:65:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536572766572206973206e6f7420696e20746865206d6967726174696f6e73207365742e",
                        "id": 3627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2644:38:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9b393c94d4c40d370f096155a9e11690885f44c8e894db3f5b93f0686323e315",
                          "typeString": "literal_string \"Server is not in the migrations set.\""
                        },
                        "value": "Server is not in the migrations set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9b393c94d4c40d370f096155a9e11690885f44c8e894db3f5b93f0686323e315",
                          "typeString": "literal_string \"Server is not in the migrations set.\""
                        }
                      ],
                      "id": 3613,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2569:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2569:114:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3629,
                  "nodeType": "ExpressionStatement",
                  "src": "2569:114:9"
                },
                {
                  "id": 3630,
                  "nodeType": "PlaceholderStatement",
                  "src": "2693:1:9"
                }
              ]
            },
            "documentation": "Only run if server is currently on migration set.",
            "id": 3632,
            "name": "isOnMigrationSet",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3612,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3611,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3632,
                  "src": "2540:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3610,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2540:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2539:19:9"
            },
            "src": "2514:187:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3654,
              "nodeType": "Block",
              "src": "2798:129:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3639,
                                        "name": "newSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3545,
                                        "src": "2832:6:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                        }
                                      },
                                      "id": 3640,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "map",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3534,
                                      "src": "2832:10:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                      }
                                    },
                                    "id": 3642,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3641,
                                      "name": "keyServer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3634,
                                      "src": "2843:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2832:21:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                    }
                                  },
                                  "id": 3643,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "2832:24:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2826:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2826:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3637,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2816:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2816:42:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2872:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3646,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2862:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2862:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2816:59:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536572766572206973206e6f7420696e20746865206e6577207365742e",
                        "id": 3650,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2877:31:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ba9408253832ba564fbcd676aa5db6cd9ece2e76f5679fb6b85bd781148bfb95",
                          "typeString": "literal_string \"Server is not in the new set.\""
                        },
                        "value": "Server is not in the new set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ba9408253832ba564fbcd676aa5db6cd9ece2e76f5679fb6b85bd781148bfb95",
                          "typeString": "literal_string \"Server is not in the new set.\""
                        }
                      ],
                      "id": 3636,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2808:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2808:101:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3652,
                  "nodeType": "ExpressionStatement",
                  "src": "2808:101:9"
                },
                {
                  "id": 3653,
                  "nodeType": "PlaceholderStatement",
                  "src": "2919:1:9"
                }
              ]
            },
            "documentation": "Only run if server is currently on new set.",
            "id": 3655,
            "name": "isOnNewSet",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3634,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3655,
                  "src": "2779:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3633,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2779:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2778:19:9"
            },
            "src": "2759:168:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3677,
              "nodeType": "Block",
              "src": "3027:125:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3662,
                                        "name": "newSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3545,
                                        "src": "3061:6:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                        }
                                      },
                                      "id": 3663,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "map",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3534,
                                      "src": "3061:10:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                      }
                                    },
                                    "id": 3665,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3664,
                                      "name": "keyServer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3657,
                                      "src": "3072:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3061:21:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                    }
                                  },
                                  "id": 3666,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "3061:24:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3055:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3055:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3660,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "3045:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3045:42:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3101:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3669,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "3091:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3091:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "3045:59:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "53657276657220697320696e20746865206e6577207365742e",
                        "id": 3673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3106:27:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6bca122ab425237bdb0e412c78f77a734f1d9966fdd2b4a4d689fb87f55165f6",
                          "typeString": "literal_string \"Server is in the new set.\""
                        },
                        "value": "Server is in the new set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6bca122ab425237bdb0e412c78f77a734f1d9966fdd2b4a4d689fb87f55165f6",
                          "typeString": "literal_string \"Server is in the new set.\""
                        }
                      ],
                      "id": 3659,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3037:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3037:97:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3675,
                  "nodeType": "ExpressionStatement",
                  "src": "3037:97:9"
                },
                {
                  "id": 3676,
                  "nodeType": "PlaceholderStatement",
                  "src": "3144:1:9"
                }
              ]
            },
            "documentation": "Only run if server is currently on new set.",
            "id": 3678,
            "name": "isNotOnNewSet",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3658,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3657,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "3008:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3656,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3008:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3007:19:9"
            },
            "src": "2985:167:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3690,
              "nodeType": "Block",
              "src": "3232:99:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3681,
                          "name": "migrationMaster",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3547,
                          "src": "3250:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3277:1:9",
                              "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": 3682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3269:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3269:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3250:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546865726520697320616e20616374697665206d6967726174696f6e2e",
                        "id": 3686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3281:31:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df49113d0023d4a08e7a834030db3d9e7135e5bacd4c3a6f256c57a82dc160be",
                          "typeString": "literal_string \"There is an active migration.\""
                        },
                        "value": "There is an active migration."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df49113d0023d4a08e7a834030db3d9e7135e5bacd4c3a6f256c57a82dc160be",
                          "typeString": "literal_string \"There is an active migration.\""
                        }
                      ],
                      "id": 3680,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3242:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3242:71:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3688,
                  "nodeType": "ExpressionStatement",
                  "src": "3242:71:9"
                },
                {
                  "id": 3689,
                  "nodeType": "PlaceholderStatement",
                  "src": "3323:1:9"
                }
              ]
            },
            "documentation": "Only when no active migration process.",
            "id": 3691,
            "name": "noActiveMigration",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3679,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3232:0:9"
            },
            "src": "3205:126:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3703,
              "nodeType": "Block",
              "src": "3434:96:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3696,
                          "name": "migrationId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3549,
                          "src": "3452:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3697,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3693,
                          "src": "3467:2:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "3452:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e207769746820676976656e206964206973206e6f74206163746976652e",
                        "id": 3699,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3471:40:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d44db64c6788c5f8b045537c0ba6a61aa617fabb0b62a2a14b3ccbc16b822007",
                          "typeString": "literal_string \"Migration with given id is not active.\""
                        },
                        "value": "Migration with given id is not active."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d44db64c6788c5f8b045537c0ba6a61aa617fabb0b62a2a14b3ccbc16b822007",
                          "typeString": "literal_string \"Migration with given id is not active.\""
                        }
                      ],
                      "id": 3695,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3444:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3444:68:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3701,
                  "nodeType": "ExpressionStatement",
                  "src": "3444:68:9"
                },
                {
                  "id": 3702,
                  "nodeType": "PlaceholderStatement",
                  "src": "3522:1:9"
                }
              ]
            },
            "documentation": "Only when migration with given id is in progress.",
            "id": 3704,
            "name": "isActiveMigration",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3693,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3704,
                  "src": "3422:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3692,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3422:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3421:12:9"
            },
            "src": "3395:135:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3718,
              "nodeType": "Block",
              "src": "3617:83:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3709,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3706,
                          "src": "3635:2:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3649:1:9",
                              "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": 3710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3641:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": "bytes32"
                          },
                          "id": 3712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3641:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "3635:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e206964206973206e6f742076616c69642e",
                        "id": 3714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3653:28:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b1eb1f09cecb920f563c6fc3534e354bb6b52c1e904cf5ded3e2494157c0e4be",
                          "typeString": "literal_string \"Migration id is not valid.\""
                        },
                        "value": "Migration id is not valid."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b1eb1f09cecb920f563c6fc3534e354bb6b52c1e904cf5ded3e2494157c0e4be",
                          "typeString": "literal_string \"Migration id is not valid.\""
                        }
                      ],
                      "id": 3708,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3627:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3627:55:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3716,
                  "nodeType": "ExpressionStatement",
                  "src": "3627:55:9"
                },
                {
                  "id": 3717,
                  "nodeType": "PlaceholderStatement",
                  "src": "3692:1:9"
                }
              ]
            },
            "documentation": "Only when migration id is valid.",
            "id": 3719,
            "name": "isValidMigrationId",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3707,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3706,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3719,
                  "src": "3605:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3705,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3605:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3604:12:9"
            },
            "src": "3577:123:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3731,
              "nodeType": "Block",
              "src": "3778:100:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3796:33:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3723,
                              "name": "currentSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3541,
                              "src": "3810:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3724,
                              "name": "newSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3545,
                              "src": "3822:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              },
                              {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            ],
                            "id": 3722,
                            "name": "areEqualSets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4513,
                            "src": "3797:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3535_storage_ptr_$_t_struct$_Set_$3535_storage_ptr_$returns$_t_bool_$",
                              "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,struct OwnedKeyServerSetWithMigration.Set storage pointer) view returns (bool)"
                            }
                          },
                          "id": 3725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3797:32:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e206973206e6f742072657175697265642e",
                        "id": 3727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3831:28:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_75840d33a4c3d5675c0f431e83a4e56e4b83b62125a8529abec73bdec2abcad1",
                          "typeString": "literal_string \"Migration is not required.\""
                        },
                        "value": "Migration is not required."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_75840d33a4c3d5675c0f431e83a4e56e4b83b62125a8529abec73bdec2abcad1",
                          "typeString": "literal_string \"Migration is not required.\""
                        }
                      ],
                      "id": 3721,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3788:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3788:72:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3729,
                  "nodeType": "ExpressionStatement",
                  "src": "3788:72:9"
                },
                {
                  "id": 3730,
                  "nodeType": "PlaceholderStatement",
                  "src": "3870:1:9"
                }
              ]
            },
            "documentation": "Only when migration is required.",
            "id": 3732,
            "name": "whenMigrationRequired",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3720,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3778:0:9"
            },
            "src": "3747:131:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3768,
              "nodeType": "Block",
              "src": "3992:254:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3763,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3737,
                                          "name": "currentSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3541,
                                          "src": "4039:10:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                          }
                                        },
                                        "id": 3738,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "4039:14:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 3741,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3739,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4838,
                                          "src": "4054:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 3740,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4054:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4039:26:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 3742,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "4039:29:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 3736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4033:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 3743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4033:36:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 3735,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4023:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4023:47:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4084:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 3745,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4074:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4074:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4023:64:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3751,
                                          "name": "newSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3545,
                                          "src": "4119:6:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                          }
                                        },
                                        "id": 3752,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "4119:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 3755,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3753,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4838,
                                          "src": "4130:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 3754,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4130:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4119:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 3756,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "4119:25:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 3750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4113:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 3757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4113:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 3749,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4103:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4103:43:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4160:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 3759,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4150:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4150:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4103:60:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4023:140:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "53656e646572206973206e6f74206120706f74656e7469616c206d6967726174696f6e207061727469636970616e742e",
                        "id": 3764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4177:50:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3102486dd897d54ffc7672fc77c92635c29374db6bcdfe8cd3dbe3ae019493c2",
                          "typeString": "literal_string \"Sender is not a potential migration participant.\""
                        },
                        "value": "Sender is not a potential migration participant."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3102486dd897d54ffc7672fc77c92635c29374db6bcdfe8cd3dbe3ae019493c2",
                          "typeString": "literal_string \"Sender is not a potential migration participant.\""
                        }
                      ],
                      "id": 3734,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "4002:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4002:226:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3766,
                  "nodeType": "ExpressionStatement",
                  "src": "4002:226:9"
                },
                {
                  "id": 3767,
                  "nodeType": "PlaceholderStatement",
                  "src": "4238:1:9"
                }
              ]
            },
            "documentation": "Only run when sender is potential participant of migration.",
            "id": 3769,
            "name": "isPossibleMigrationParticipant",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3733,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3992:0:9"
            },
            "src": "3952:294:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3805,
              "nodeType": "Block",
              "src": "4361:248:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3776,
                                          "name": "currentSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3541,
                                          "src": "4408:10:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                          }
                                        },
                                        "id": 3777,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "4408:14:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 3779,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3778,
                                        "name": "keyServer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3771,
                                        "src": "4423:9:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4408:25:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 3780,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "4408:28:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 3775,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4402:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 3781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4402:35:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 3774,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4392:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4392:46:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3784,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4452:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 3783,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4442:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3785,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4442:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4392:63:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3789,
                                          "name": "migrationSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3543,
                                          "src": "4487:12:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                          }
                                        },
                                        "id": 3790,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "4487:16:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 3792,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3791,
                                        "name": "keyServer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3771,
                                        "src": "4504:9:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4487:27:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 3793,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "4487:30:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 3788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4481:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 3794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4481:37:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 3787,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4471:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4471:48:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4533:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 3796,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4523:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3798,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4523:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4471:65:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4392:144:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536572766572206973206e6f742061206d6967726174696f6e207061727469636970616e742e",
                        "id": 3801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4550:40:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4580eaf6bff276689a07e894bdcf1bb0c3b076a26c8e0408f51e41c9d41312da",
                          "typeString": "literal_string \"Server is not a migration participant.\""
                        },
                        "value": "Server is not a migration participant."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4580eaf6bff276689a07e894bdcf1bb0c3b076a26c8e0408f51e41c9d41312da",
                          "typeString": "literal_string \"Server is not a migration participant.\""
                        }
                      ],
                      "id": 3773,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "4371:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4371:220:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3803,
                  "nodeType": "ExpressionStatement",
                  "src": "4371:220:9"
                },
                {
                  "id": 3804,
                  "nodeType": "PlaceholderStatement",
                  "src": "4601:1:9"
                }
              ]
            },
            "documentation": "Only run when sender is participant of migration.",
            "id": 3806,
            "name": "isMigrationParticipant",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3771,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3806,
                  "src": "4342:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3770,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4342:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4341:19:9"
            },
            "src": "4310:299:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3813,
              "nodeType": "Block",
              "src": "4684:69:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6e747261637420646f6573206e6f7420737570706f727420646972656374207061796d656e74732e",
                        "id": 3810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4701:44:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e52559f46e5ad6cd8f1b8202b4eaacdd6d199d8fd01c7d79b01fd0203b757eac",
                          "typeString": "literal_string \"Contract does not support direct payments.\""
                        },
                        "value": "Contract does not support direct payments."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_e52559f46e5ad6cd8f1b8202b4eaacdd6d199d8fd01c7d79b01fd0203b757eac",
                          "typeString": "literal_string \"Contract does not support direct payments.\""
                        }
                      ],
                      "id": 3809,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4843,
                        4844
                      ],
                      "referencedDeclaration": 4844,
                      "src": "4694:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 3811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4694:52:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3812,
                  "nodeType": "ExpressionStatement",
                  "src": "4694:52:9"
                }
              ]
            },
            "documentation": "We do not support direct payments.",
            "id": 3814,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3807,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4666:2:9"
            },
            "payable": true,
            "returnParameters": {
              "id": 3808,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4684:0:9"
            },
            "scope": 4653,
            "src": "4658:95:9",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3821,
              "nodeType": "Block",
              "src": "4896:45:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3819,
                    "name": "currentSetChangeBlock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3539,
                    "src": "4913:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3818,
                  "id": 3820,
                  "nodeType": "Return",
                  "src": "4906:28:9"
                }
              ]
            },
            "documentation": "Get number of block when current set has been changed last time.",
            "id": 3822,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentLastChange",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3815,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4861:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3817,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3822,
                  "src": "4887:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3816,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4887:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4886:9:9"
            },
            "scope": 4653,
            "src": "4832:109:9",
            "stateMutability": "view",
            "superFunction": 469,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3853,
              "nodeType": "Block",
              "src": "5084:183:9",
              "statements": [
                {
                  "assignments": [
                    3830
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3830,
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "scope": 3854,
                      "src": "5094:23:9",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3829,
                        "name": "KeyServer",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3527,
                        "src": "5094:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3835,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3831,
                        "name": "currentSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3541,
                        "src": "5120:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      "id": 3832,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "map",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3534,
                      "src": "5120:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                      }
                    },
                    "id": 3834,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3833,
                      "name": "keyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3824,
                      "src": "5135:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5120:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5094:51:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3839,
                                    "name": "entry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3830,
                                    "src": "5179:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage pointer"
                                    }
                                  },
                                  "id": 3840,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "5179:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5173:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5173:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3837,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "5163:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5163:26:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5203:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3843,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "5193:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5193:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "5163:43:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e74727920646f6573206e6f742065786973742e",
                        "id": 3847,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5208:23:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_83ebfcd36c786c4c3b423c67c3b07911de7e03a44effb2d1ce1a322f4d548f68",
                          "typeString": "literal_string \"Entry does not exist.\""
                        },
                        "value": "Entry does not exist."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_83ebfcd36c786c4c3b423c67c3b07911de7e03a44effb2d1ce1a322f4d548f68",
                          "typeString": "literal_string \"Entry does not exist.\""
                        }
                      ],
                      "id": 3836,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "5155:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5155:77:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3849,
                  "nodeType": "ExpressionStatement",
                  "src": "5155:77:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3850,
                      "name": "entry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3830,
                      "src": "5249:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage pointer"
                      }
                    },
                    "id": 3851,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "index",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3522,
                    "src": "5249:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 3828,
                  "id": 3852,
                  "nodeType": "Return",
                  "src": "5242:18:9"
                }
              ]
            },
            "documentation": "Get index of given key server in current set.",
            "id": 3854,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentKeyServerIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3824,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3854,
                  "src": "5035:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3823,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5035:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5034:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3828,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3827,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3854,
                  "src": "5077:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3826,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5077:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5076:7:9"
            },
            "scope": 4653,
            "src": "5001:266:9",
            "stateMutability": "view",
            "superFunction": 476,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3865,
              "nodeType": "Block",
              "src": "5389:53:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3860,
                            "name": "currentSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3541,
                            "src": "5412:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                            }
                          },
                          "id": 3861,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "list",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3530,
                          "src": "5412:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 3862,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5412:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3859,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "5406:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": "uint8"
                    },
                    "id": 3863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5406:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 3858,
                  "id": 3864,
                  "nodeType": "Return",
                  "src": "5399:36:9"
                }
              ]
            },
            "documentation": "Get count of key servers in current set.",
            "id": 3866,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentKeyServersCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3855,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5356:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3858,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3857,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3866,
                  "src": "5382:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3856,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5382:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5381:7:9"
            },
            "scope": 4653,
            "src": "5322:120:9",
            "stateMutability": "view",
            "superFunction": 481,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3887,
              "nodeType": "Block",
              "src": "5572:122:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3874,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3868,
                          "src": "5590:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3875,
                              "name": "currentSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3541,
                              "src": "5598:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            "id": 3876,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "5598:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 3877,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5598:22:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5590:30:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e646578206973206f7574206f6620626f756e64732e",
                        "id": 3879,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5622:25:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9bcbe5b2ccebeddef4e1871345b6aa9f87b6dc1cd3e2474789df3ae18e4d3edf",
                          "typeString": "literal_string \"Index is out of bounds.\""
                        },
                        "value": "Index is out of bounds."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9bcbe5b2ccebeddef4e1871345b6aa9f87b6dc1cd3e2474789df3ae18e4d3edf",
                          "typeString": "literal_string \"Index is out of bounds.\""
                        }
                      ],
                      "id": 3873,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "5582:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5582:66:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3881,
                  "nodeType": "ExpressionStatement",
                  "src": "5582:66:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3882,
                        "name": "currentSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3541,
                        "src": "5665:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      "id": 3883,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3530,
                      "src": "5665:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 3885,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3884,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3868,
                      "src": "5681:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5665:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3872,
                  "id": 3886,
                  "nodeType": "Return",
                  "src": "5658:29:9"
                }
              ]
            },
            "documentation": "Get address of key server in current set.",
            "id": 3888,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentKeyServer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3868,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 3888,
                  "src": "5527:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3867,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5527:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5526:13:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3871,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3888,
                  "src": "5563:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3870,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5563:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5562:9:9"
            },
            "scope": 4653,
            "src": "5498:196:9",
            "stateMutability": "view",
            "superFunction": 488,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3897,
              "nodeType": "Block",
              "src": "5803:39:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3894,
                      "name": "currentSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3541,
                      "src": "5820:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$3535_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                      }
                    },
                    "id": 3895,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "list",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3530,
                    "src": "5820:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 3893,
                  "id": 3896,
                  "nodeType": "Return",
                  "src": "5813:22:9"
                }
              ]
            },
            "documentation": "Get all current key servers.",
            "id": 3898,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentKeyServers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3889,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5766:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3893,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3892,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3898,
                  "src": "5792:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3890,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5792:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3891,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5792:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5791:11:9"
            },
            "scope": 4653,
            "src": "5737:105:9",
            "stateMutability": "view",
            "superFunction": 494,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3914,
              "nodeType": "Block",
              "src": "6001:59:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3908,
                          "name": "currentSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3541,
                          "src": "6018:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3909,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "6018:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3911,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3910,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3900,
                        "src": "6033:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6018:25:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 3912,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "publicKey",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3524,
                    "src": "6018:35:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 3907,
                  "id": 3913,
                  "nodeType": "Return",
                  "src": "6011:42:9"
                }
              ]
            },
            "documentation": "Get current key server public key.",
            "id": 3915,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3903,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3900,
                    "src": "5974:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3904,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3902,
                  "name": "isOnCurrentSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3609,
                  "src": "5959:14:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5959:25:9"
              }
            ],
            "name": "getCurrentKeyServerPublic",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3900,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3915,
                  "src": "5926:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3899,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5926:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5925:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3907,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3906,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3915,
                  "src": "5994:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3905,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5994:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5993:7:9"
            },
            "scope": 4653,
            "src": "5891:169:9",
            "stateMutability": "view",
            "superFunction": 501,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3931,
              "nodeType": "Block",
              "src": "6218:52:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3925,
                          "name": "currentSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3541,
                          "src": "6235:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3926,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "6235:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3928,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3927,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3917,
                        "src": "6250:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6235:25:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 3929,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ip",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3526,
                    "src": "6235:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 3924,
                  "id": 3930,
                  "nodeType": "Return",
                  "src": "6228:35:9"
                }
              ]
            },
            "documentation": "Get current key server address.",
            "id": 3932,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3920,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3917,
                    "src": "6190:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3921,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3919,
                  "name": "isOnCurrentSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3609,
                  "src": "6175:14:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6175:25:9"
              }
            ],
            "name": "getCurrentKeyServerAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3917,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3932,
                  "src": "6142:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6142:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6141:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3924,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3923,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3932,
                  "src": "6210:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3922,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6210:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6209:8:9"
            },
            "scope": 4653,
            "src": "6106:164:9",
            "stateMutability": "view",
            "superFunction": 508,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3941,
              "nodeType": "Block",
              "src": "6383:41:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3938,
                      "name": "migrationSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3543,
                      "src": "6400:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$3535_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                      }
                    },
                    "id": 3939,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "list",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3530,
                    "src": "6400:17:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 3937,
                  "id": 3940,
                  "nodeType": "Return",
                  "src": "6393:24:9"
                }
              ]
            },
            "documentation": "Get all migration key servers.",
            "id": 3942,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getMigrationKeyServers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3933,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6346:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3936,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3942,
                  "src": "6372:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3934,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6372:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3935,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6372:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6371:11:9"
            },
            "scope": 4653,
            "src": "6315:109:9",
            "stateMutability": "view",
            "superFunction": 514,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3958,
              "nodeType": "Block",
              "src": "6589:61:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3952,
                          "name": "migrationSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3543,
                          "src": "6606:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3953,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "6606:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3955,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3954,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3944,
                        "src": "6623:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6606:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 3956,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "publicKey",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3524,
                    "src": "6606:37:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 3951,
                  "id": 3957,
                  "nodeType": "Return",
                  "src": "6599:44:9"
                }
              ]
            },
            "documentation": "Get migration key server public key.",
            "id": 3959,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3947,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3944,
                    "src": "6562:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3948,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3946,
                  "name": "isOnMigrationSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3632,
                  "src": "6545:16:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6545:27:9"
              }
            ],
            "name": "getMigrationKeyServerPublic",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3944,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3959,
                  "src": "6512:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3943,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6512:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6511:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3950,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3959,
                  "src": "6582:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3949,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6582:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6581:7:9"
            },
            "scope": 4653,
            "src": "6475:175:9",
            "stateMutability": "view",
            "superFunction": 521,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3975,
              "nodeType": "Block",
              "src": "6814:54:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3969,
                          "name": "migrationSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3543,
                          "src": "6831:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3970,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "6831:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3972,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3971,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3961,
                        "src": "6848:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6831:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 3973,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ip",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3526,
                    "src": "6831:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 3968,
                  "id": 3974,
                  "nodeType": "Return",
                  "src": "6824:37:9"
                }
              ]
            },
            "documentation": "Get migration key server address.",
            "id": 3976,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3964,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3961,
                    "src": "6786:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3965,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3963,
                  "name": "isOnMigrationSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3632,
                  "src": "6769:16:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6769:27:9"
              }
            ],
            "name": "getMigrationKeyServerAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3961,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3976,
                  "src": "6736:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3960,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6736:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6735:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3968,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3967,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3976,
                  "src": "6806:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3966,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6806:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6805:8:9"
            },
            "scope": 4653,
            "src": "6698:170:9",
            "stateMutability": "view",
            "superFunction": 528,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3985,
              "nodeType": "Block",
              "src": "6969:35:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3982,
                      "name": "newSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3545,
                      "src": "6986:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$3535_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                      }
                    },
                    "id": 3983,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "list",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3530,
                    "src": "6986:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 3981,
                  "id": 3984,
                  "nodeType": "Return",
                  "src": "6979:18:9"
                }
              ]
            },
            "documentation": "Get all new key servers.",
            "id": 3986,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getNewKeyServers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3977,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6932:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3980,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3986,
                  "src": "6958:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3978,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6958:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3979,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6958:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6957:11:9"
            },
            "scope": 4653,
            "src": "6907:97:9",
            "stateMutability": "view",
            "superFunction": 534,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4002,
              "nodeType": "Block",
              "src": "7151:55:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3996,
                          "name": "newSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3545,
                          "src": "7168:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3997,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "7168:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3999,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3998,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3988,
                        "src": "7179:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7168:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 4000,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "publicKey",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3524,
                    "src": "7168:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 3995,
                  "id": 4001,
                  "nodeType": "Return",
                  "src": "7161:38:9"
                }
              ]
            },
            "documentation": "Get new key server public key.",
            "id": 4003,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3991,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3988,
                    "src": "7124:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3992,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3990,
                  "name": "isOnNewSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3655,
                  "src": "7113:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7113:21:9"
              }
            ],
            "name": "getNewKeyServerPublic",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3988,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4003,
                  "src": "7080:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3987,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7080:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7079:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3995,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3994,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4003,
                  "src": "7144:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3993,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7144:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7143:7:9"
            },
            "scope": 4653,
            "src": "7049:157:9",
            "stateMutability": "view",
            "superFunction": 541,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4019,
              "nodeType": "Block",
              "src": "7352:48:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4013,
                          "name": "newSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3545,
                          "src": "7369:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 4014,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "7369:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 4016,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4015,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4005,
                        "src": "7380:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7369:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 4017,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ip",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3526,
                    "src": "7369:24:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 4012,
                  "id": 4018,
                  "nodeType": "Return",
                  "src": "7362:31:9"
                }
              ]
            },
            "documentation": "Get new key server address.",
            "id": 4020,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4008,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4005,
                    "src": "7324:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4009,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4007,
                  "name": "isOnNewSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3655,
                  "src": "7313:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7313:21:9"
              }
            ],
            "name": "getNewKeyServerAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4005,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4020,
                  "src": "7280:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4004,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7280:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7279:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4012,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4011,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4020,
                  "src": "7344:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4010,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7344:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7343:8:9"
            },
            "scope": 4653,
            "src": "7248:152:9",
            "stateMutability": "view",
            "superFunction": 548,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4030,
              "nodeType": "Block",
              "src": "7522:35:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4028,
                    "name": "migrationId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3549,
                    "src": "7539:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 4027,
                  "id": 4029,
                  "nodeType": "Return",
                  "src": "7532:18:9"
                }
              ]
            },
            "documentation": "Get migration id.",
            "id": 4031,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4023,
                    "name": "migrationId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3549,
                    "src": "7491:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 4024,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4022,
                  "name": "isValidMigrationId",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3719,
                  "src": "7472:18:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7472:31:9"
              }
            ],
            "name": "getMigrationId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4021,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7455:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4026,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4031,
                  "src": "7513:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7513:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7512:9:9"
            },
            "scope": 4653,
            "src": "7432:125:9",
            "stateMutability": "view",
            "superFunction": 553,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4071,
              "nodeType": "Block",
              "src": "7727:276:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4050,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4046,
                              "name": "newSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3545,
                              "src": "7794:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            "id": 4047,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "7794:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4048,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7794:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7816:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7794:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e20746f20656d7074792073657420697320696d706f737369626c652e",
                        "id": 4051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7819:39:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1c224b9347bf937358c282588588ec648bb92cb62051df8d27f1f60c0ff6c378",
                          "typeString": "literal_string \"Migration to empty set is impossible.\""
                        },
                        "value": "Migration to empty set is impossible."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1c224b9347bf937358c282588588ec648bb92cb62051df8d27f1f60c0ff6c378",
                          "typeString": "literal_string \"Migration to empty set is impossible.\""
                        }
                      ],
                      "id": 4045,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "7785:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7785:74:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4053,
                  "nodeType": "ExpressionStatement",
                  "src": "7785:74:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4054,
                      "name": "migrationMaster",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3547,
                      "src": "7870:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4055,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4838,
                        "src": "7888:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7888:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7870:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4058,
                  "nodeType": "ExpressionStatement",
                  "src": "7870:28:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4059,
                      "name": "migrationId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3549,
                      "src": "7908:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4060,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4033,
                      "src": "7922:2:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7908:16:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 4062,
                  "nodeType": "ExpressionStatement",
                  "src": "7908:16:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4064,
                        "name": "migrationSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "7942:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4065,
                        "name": "newSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3545,
                        "src": "7956:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      ],
                      "id": 4063,
                      "name": "copySet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4381,
                      "src": "7934:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_struct$_Set_$3535_storage_ptr_$returns$__$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,struct OwnedKeyServerSetWithMigration.Set storage pointer)"
                      }
                    },
                    "id": 4066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7934:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4067,
                  "nodeType": "ExpressionStatement",
                  "src": "7934:29:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 4068,
                      "name": "MigrationStarted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 462,
                      "src": "7978:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 4069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7978:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4070,
                  "nodeType": "EmitStatement",
                  "src": "7973:23:9"
                }
              ]
            },
            "documentation": "Start migration.",
            "id": 4072,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4036,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4035,
                  "name": "noActiveMigration",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3691,
                  "src": "7633:17:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7633:17:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4038,
                    "name": "id",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4033,
                    "src": "7670:2:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 4039,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4037,
                  "name": "isValidMigrationId",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3719,
                  "src": "7651:18:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7651:22:9"
              },
              {
                "arguments": null,
                "id": 4041,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4040,
                  "name": "whenMigrationRequired",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3732,
                  "src": "7674:21:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7674:21:9"
              },
              {
                "arguments": null,
                "id": 4043,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4042,
                  "name": "isPossibleMigrationParticipant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3769,
                  "src": "7696:30:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7696:30:9"
              }
            ],
            "name": "startMigration",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4034,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4033,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 4072,
                  "src": "7612:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4032,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7612:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7611:12:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4044,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7727:0:9"
            },
            "scope": 4653,
            "src": "7588:415:9",
            "stateMutability": "nonpayable",
            "superFunction": 570,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4169,
              "nodeType": "Block",
              "src": "8157:960:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "8175:35:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4088,
                            "name": "migrationConfirmations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3553,
                            "src": "8176:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 4091,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4089,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4838,
                              "src": "8199:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4090,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8199:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8176:34:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e20697320616c726561647920636f6e6669726d65642e",
                        "id": 4093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8212:33:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a7bf344b752df72dae6a82473226bcc0666b750ddca14300a83fb403255f0bea",
                          "typeString": "literal_string \"Migration is already confirmed.\""
                        },
                        "value": "Migration is already confirmed."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a7bf344b752df72dae6a82473226bcc0666b750ddca14300a83fb403255f0bea",
                          "typeString": "literal_string \"Migration is already confirmed.\""
                        }
                      ],
                      "id": 4087,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "8167:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8167:79:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4095,
                  "nodeType": "ExpressionStatement",
                  "src": "8167:79:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4096,
                        "name": "migrationConfirmations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3553,
                        "src": "8256:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 4099,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4097,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "8279:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4098,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8279:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8256:34:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4100,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8293:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "8256:41:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4102,
                  "nodeType": "ExpressionStatement",
                  "src": "8256:41:9"
                },
                {
                  "body": {
                    "id": 4125,
                    "nodeType": "Block",
                    "src": "8403:114:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 4121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "8421:45:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4115,
                              "name": "migrationConfirmations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3553,
                              "src": "8422:22:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 4120,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4116,
                                  "name": "migrationSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3543,
                                  "src": "8445:12:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                  }
                                },
                                "id": 4117,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "8445:17:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4119,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4118,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4104,
                                "src": "8463:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8445:20:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8422:44:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4124,
                        "nodeType": "IfStatement",
                        "src": "8417:90:9",
                        "trueBody": {
                          "id": 4123,
                          "nodeType": "Block",
                          "src": "8468:39:9",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 4086,
                              "id": 4122,
                              "nodeType": "Return",
                              "src": "8486:7:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4107,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4104,
                      "src": "8368:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4108,
                          "name": "migrationSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3543,
                          "src": "8372:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 4109,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "8372:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4110,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8372:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8368:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4126,
                  "initializationExpression": {
                    "assignments": [
                      4104
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4104,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 4170,
                        "src": "8356:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4103,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8356:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4106,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4105,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8365:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8356:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "8398:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4112,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4104,
                        "src": "8400:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4114,
                    "nodeType": "ExpressionStatement",
                    "src": "8398:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "8351:166:9"
                },
                {
                  "body": {
                    "id": 4147,
                    "nodeType": "Block",
                    "src": "8637:76:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8651:51:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4139,
                              "name": "migrationConfirmations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3553,
                              "src": "8658:22:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 4144,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4140,
                                  "name": "migrationSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3543,
                                  "src": "8681:12:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                  }
                                },
                                "id": 4141,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "8681:17:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4143,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4142,
                                "name": "m",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4128,
                                "src": "8699:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8681:20:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8658:44:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4146,
                        "nodeType": "ExpressionStatement",
                        "src": "8651:51:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4131,
                      "name": "m",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4128,
                      "src": "8602:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4132,
                          "name": "migrationSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3543,
                          "src": "8606:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 4133,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "8606:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4134,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8606:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8602:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4148,
                  "initializationExpression": {
                    "assignments": [
                      4128
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4128,
                        "name": "m",
                        "nodeType": "VariableDeclaration",
                        "scope": 4170,
                        "src": "8590:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4127,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8590:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4130,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8599:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8590:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "8632:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4136,
                        "name": "m",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4128,
                        "src": "8634:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4138,
                    "nodeType": "ExpressionStatement",
                    "src": "8632:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "8585:128:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8722:22:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4149,
                      "name": "migrationMaster",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3547,
                      "src": "8729:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4151,
                  "nodeType": "ExpressionStatement",
                  "src": "8722:22:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4153,
                        "name": "currentSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3541,
                        "src": "8815:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4154,
                        "name": "migrationSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "8827:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      ],
                      "id": 4152,
                      "name": "copySet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4381,
                      "src": "8807:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_struct$_Set_$3535_storage_ptr_$returns$__$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,struct OwnedKeyServerSetWithMigration.Set storage pointer)"
                      }
                    },
                    "id": 4155,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8807:33:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4156,
                  "nodeType": "ExpressionStatement",
                  "src": "8807:33:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4158,
                        "name": "migrationSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "8917:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      ],
                      "id": 4157,
                      "name": "clearSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4433,
                      "src": "8908:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$returns$__$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer)"
                      }
                    },
                    "id": 4159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8908:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4160,
                  "nodeType": "ExpressionStatement",
                  "src": "8908:22:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 4161,
                      "name": "MigrationCompleted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 464,
                      "src": "8986:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 4162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8986:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4163,
                  "nodeType": "EmitStatement",
                  "src": "8981:25:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4164,
                      "name": "currentSetChangeBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3539,
                      "src": "9074:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4165,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4828,
                        "src": "9098:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 4166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9098:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9074:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4168,
                  "nodeType": "ExpressionStatement",
                  "src": "9074:36:9"
                }
              ]
            },
            "documentation": "Confirm migration.",
            "id": 4170,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4077,
                    "name": "id",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4074,
                    "src": "8102:2:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 4078,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4076,
                  "name": "isValidMigrationId",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3719,
                  "src": "8083:18:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8083:22:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4080,
                    "name": "id",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4074,
                    "src": "8124:2:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 4081,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4079,
                  "name": "isActiveMigration",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3704,
                  "src": "8106:17:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8106:21:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 4083,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4838,
                      "src": "8145:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 4084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "8145:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4085,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4082,
                  "name": "isOnMigrationSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3632,
                  "src": "8128:16:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8128:28:9"
              }
            ],
            "name": "confirmMigration",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4074,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 4170,
                  "src": "8062:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4073,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8062:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8061:12:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4086,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8157:0:9"
            },
            "scope": 4653,
            "src": "8036:1081:9",
            "stateMutability": "nonpayable",
            "superFunction": 575,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4177,
              "nodeType": "Block",
              "src": "9215:39:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4175,
                    "name": "migrationMaster",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3547,
                    "src": "9232:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4174,
                  "id": 4176,
                  "nodeType": "Return",
                  "src": "9225:22:9"
                }
              ]
            },
            "documentation": "Get migration master.",
            "id": 4178,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getMigrationMaster",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4171,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9180:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4173,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4178,
                  "src": "9206:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4172,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9206:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9205:9:9"
            },
            "scope": 4653,
            "src": "9153:101:9",
            "stateMutability": "view",
            "superFunction": 558,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4192,
              "nodeType": "Block",
              "src": "9404:57:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4188,
                      "name": "migrationConfirmations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3553,
                      "src": "9421:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 4190,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4189,
                      "name": "keyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4180,
                      "src": "9444:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9421:33:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4187,
                  "id": 4191,
                  "nodeType": "Return",
                  "src": "9414:40:9"
                }
              ]
            },
            "documentation": "Is migration confirmed.",
            "id": 4193,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4183,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4180,
                    "src": "9378:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4184,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4182,
                  "name": "isMigrationParticipant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3806,
                  "src": "9355:22:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9355:33:9"
              }
            ],
            "name": "isMigrationConfirmed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4180,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4193,
                  "src": "9322:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4179,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9322:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9321:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4186,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4193,
                  "src": "9398:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4185,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9398:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9397:6:9"
            },
            "scope": 4653,
            "src": "9292:169:9",
            "stateMutability": "view",
            "superFunction": 565,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4208,
              "nodeType": "Block",
              "src": "9668:90:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9686:14:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 4199,
                          "name": "isInitialized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "9687:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f7420696e697469616c697a656421",
                        "id": 4201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9702:18:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4300141d164db2d9e19acd7c084fa4711f1ef12b803989fc3676b5566e11020a",
                          "typeString": "literal_string \"Not initialized!\""
                        },
                        "value": "Not initialized!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4300141d164db2d9e19acd7c084fa4711f1ef12b803989fc3676b5566e11020a",
                          "typeString": "literal_string \"Not initialized!\""
                        }
                      ],
                      "id": 4198,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "9678:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9678:43:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4203,
                  "nodeType": "ExpressionStatement",
                  "src": "9678:43:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4204,
                      "name": "isInitialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3537,
                      "src": "9731:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4205,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9747:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "9731:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4207,
                  "nodeType": "ExpressionStatement",
                  "src": "9731:20:9"
                }
              ]
            },
            "documentation": "Complete initialization. Before this function is called, all calls to addKeyServer/removeKeyServer\n affect both newSet and currentSet.",
            "id": 4209,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4196,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4195,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "9658:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9658:9:9"
              }
            ],
            "name": "completeInitialization",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4194,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9648:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4197,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9668:0:9"
            },
            "scope": 4653,
            "src": "9617:141:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4251,
              "nodeType": "Block",
              "src": "10033:326:9",
              "statements": [
                {
                  "assignments": [
                    4230
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4230,
                      "name": "keyServer",
                      "nodeType": "VariableDeclaration",
                      "scope": 4252,
                      "src": "10076:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4229,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10076:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4236,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4232,
                        "name": "newSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3545,
                        "src": "10108:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4233,
                        "name": "keyServerPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4211,
                        "src": "10116:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4234,
                        "name": "keyServerIp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4213,
                        "src": "10133:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 4231,
                      "name": "appendToSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4581,
                      "src": "10096:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,bytes memory,string memory) returns (address)"
                      }
                    },
                    "id": 4235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10096:49:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10076:69:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 4238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10197:14:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4237,
                      "name": "isInitialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3537,
                      "src": "10198:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4246,
                  "nodeType": "IfStatement",
                  "src": "10193:98:9",
                  "trueBody": {
                    "id": 4245,
                    "nodeType": "Block",
                    "src": "10213:78:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4240,
                              "name": "currentSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3541,
                              "src": "10239:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4241,
                              "name": "keyServerPublic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4211,
                              "src": "10251:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4242,
                              "name": "keyServerIp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4213,
                              "src": "10268:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4239,
                            "name": "appendToSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4581,
                            "src": "10227:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,bytes memory,string memory) returns (address)"
                            }
                          },
                          "id": 4243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10227:53:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4244,
                        "nodeType": "ExpressionStatement",
                        "src": "10227:53:9"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4248,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4230,
                        "src": "10342:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 4247,
                      "name": "KeyServerAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 456,
                      "src": "10327:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 4249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10327:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4250,
                  "nodeType": "EmitStatement",
                  "src": "10322:30:9"
                }
              ]
            },
            "documentation": "Add new key server to set.",
            "id": 4252,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4216,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4215,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "9887:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9887:9:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4218,
                    "name": "keyServerIp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4213,
                    "src": "9922:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 4219,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4217,
                  "name": "notAnEmptyString",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3573,
                  "src": "9905:16:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_string_memory_ptr_$",
                    "typeString": "modifier (string memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9905:29:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4221,
                    "name": "keyServerPublic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4211,
                    "src": "9957:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  }
                ],
                "id": 4222,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4220,
                  "name": "isValidPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3586,
                  "src": "9943:13:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9943:30:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4225,
                        "name": "keyServerPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4211,
                        "src": "10011:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 4224,
                      "name": "computeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4299,
                      "src": "9996:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory) pure returns (address)"
                      }
                    },
                    "id": 4226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9996:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4227,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4223,
                  "name": "isNotOnNewSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3678,
                  "src": "9982:13:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9982:46:9"
              }
            ],
            "name": "addKeyServer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4211,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 4252,
                  "src": "9821:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4210,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9821:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4213,
                  "name": "keyServerIp",
                  "nodeType": "VariableDeclaration",
                  "scope": 4252,
                  "src": "9844:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4212,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9844:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9820:43:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4228,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10033:0:9"
            },
            "scope": 4653,
            "src": "9799:560:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4280,
              "nodeType": "Block",
              "src": "10484:290:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4263,
                        "name": "newSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3545,
                        "src": "10551:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4264,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4254,
                        "src": "10559:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 4262,
                      "name": "removeFromSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4652,
                      "src": "10537:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_address_$returns$__$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,address)"
                      }
                    },
                    "id": 4265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10537:32:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4266,
                  "nodeType": "ExpressionStatement",
                  "src": "10537:32:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 4268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10627:14:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4267,
                      "name": "isInitialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3537,
                      "src": "10628:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4275,
                  "nodeType": "IfStatement",
                  "src": "10623:81:9",
                  "trueBody": {
                    "id": 4274,
                    "nodeType": "Block",
                    "src": "10643:61:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4270,
                              "name": "currentSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3541,
                              "src": "10671:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4271,
                              "name": "keyServer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4254,
                              "src": "10683:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4269,
                            "name": "removeFromSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4652,
                            "src": "10657:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_address_$returns$__$",
                              "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,address)"
                            }
                          },
                          "id": 4272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10657:36:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4273,
                        "nodeType": "ExpressionStatement",
                        "src": "10657:36:9"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4277,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4254,
                        "src": "10757:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 4276,
                      "name": "KeyServerRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 460,
                      "src": "10740:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 4278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10740:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4279,
                  "nodeType": "EmitStatement",
                  "src": "10735:32:9"
                }
              ]
            },
            "documentation": "Remove key server from set.",
            "id": 4281,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4257,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4256,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "10452:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10452:9:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4259,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4254,
                    "src": "10473:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4260,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4258,
                  "name": "isOnNewSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3655,
                  "src": "10462:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10462:21:9"
              }
            ],
            "name": "removeKeyServer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4254,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4281,
                  "src": "10426:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4253,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10426:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10425:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4261,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10484:0:9"
            },
            "scope": 4653,
            "src": "10401:373:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4298,
              "nodeType": "Block",
              "src": "10899:112:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4291,
                                  "name": "keyServerPublic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4283,
                                  "src": "10939:15:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 4290,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4832,
                                "src": "10929:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                  "typeString": "function () pure returns (bytes32)"
                                }
                              },
                              "id": 4292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10929:26:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10924:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 4293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10924:32:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078303046464646464646464646464646464646464646464646464646464646464646464646464646464646",
                          "id": 4294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10959:44:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542975_by_1",
                            "typeString": "int_const 1461...(41 digits omitted)...2975"
                          },
                          "value": "0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                        },
                        "src": "10924:79:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4288,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "10916:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 4296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10916:88:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4287,
                  "id": 4297,
                  "nodeType": "Return",
                  "src": "10909:95:9"
                }
              ]
            },
            "documentation": "Compute address from public key.",
            "id": 4299,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "computeAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4284,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4283,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 4299,
                  "src": "10845:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4282,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10845:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10844:23:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4287,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4286,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4299,
                  "src": "10890:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4285,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10890:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10889:9:9"
            },
            "scope": 4653,
            "src": "10821:190:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4311,
              "nodeType": "Block",
              "src": "11117:52:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4306,
                        "name": "keyServerPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4301,
                        "src": "11134:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 4307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11134:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3634",
                      "id": 4308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11160:2:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_64_by_1",
                        "typeString": "int_const 64"
                      },
                      "value": "64"
                    },
                    "src": "11134:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4305,
                  "id": 4310,
                  "nodeType": "Return",
                  "src": "11127:35:9"
                }
              ]
            },
            "documentation": "'Check' public key.",
            "id": 4312,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "checkPublic",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4301,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 4312,
                  "src": "11066:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4300,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11066:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11065:23:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4304,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4312,
                  "src": "11111:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4303,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11111:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11110:6:9"
            },
            "scope": 4653,
            "src": "11045:124:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4380,
              "nodeType": "Block",
              "src": "11276:271:9",
              "statements": [
                {
                  "body": {
                    "id": 4340,
                    "nodeType": "Block",
                    "src": "11330:54:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "11344:29:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4331,
                                "name": "set1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4314,
                                "src": "11351:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4332,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "map",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3534,
                              "src": "11351:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                              }
                            },
                            "id": 4337,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4333,
                                  "name": "set1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4314,
                                  "src": "11360:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4334,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11360:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4336,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4335,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4320,
                                "src": "11370:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11360:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11351:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4339,
                        "nodeType": "ExpressionStatement",
                        "src": "11344:29:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4323,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4320,
                      "src": "11303:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4324,
                          "name": "set1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4314,
                          "src": "11307:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4325,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "11307:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4326,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11307:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11303:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4341,
                  "initializationExpression": {
                    "assignments": [
                      4320
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4320,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4381,
                        "src": "11291:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4319,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11291:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4322,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11300:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11291:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "11325:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4328,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4320,
                        "src": "11327:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4330,
                    "nodeType": "ExpressionStatement",
                    "src": "11325:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "11286:98:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4342,
                        "name": "set1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4314,
                        "src": "11394:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                        }
                      },
                      "id": 4344,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3530,
                      "src": "11394:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4345,
                        "name": "set2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4316,
                        "src": "11406:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                        }
                      },
                      "id": 4346,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3530,
                      "src": "11406:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "src": "11394:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "id": 4348,
                  "nodeType": "ExpressionStatement",
                  "src": "11394:21:9"
                },
                {
                  "body": {
                    "id": 4378,
                    "nodeType": "Block",
                    "src": "11469:72:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4361,
                                "name": "set1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4314,
                                "src": "11483:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4367,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "map",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3534,
                              "src": "11483:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                              }
                            },
                            "id": 4368,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4363,
                                  "name": "set1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4314,
                                  "src": "11492:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4364,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11492:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4366,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4365,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4350,
                                "src": "11502:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11492:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11483:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4369,
                                "name": "set2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4316,
                                "src": "11508:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4370,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "map",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3534,
                              "src": "11508:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                              }
                            },
                            "id": 4375,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4371,
                                  "name": "set1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4314,
                                  "src": "11517:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4372,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11517:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4374,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4373,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4350,
                                "src": "11527:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11517:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11508:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                            }
                          },
                          "src": "11483:47:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                          }
                        },
                        "id": 4377,
                        "nodeType": "ExpressionStatement",
                        "src": "11483:47:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4353,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4350,
                      "src": "11442:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4354,
                          "name": "set1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4314,
                          "src": "11446:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4355,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "11446:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4356,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11446:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11442:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4379,
                  "initializationExpression": {
                    "assignments": [
                      4350
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4350,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 4381,
                        "src": "11430:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4349,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11430:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4352,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4351,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11439:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11430:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4359,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "11464:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4358,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4350,
                        "src": "11466:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4360,
                    "nodeType": "ExpressionStatement",
                    "src": "11464:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "11425:116:9"
                }
              ]
            },
            "documentation": "Copy set (assignment operator).",
            "id": 4381,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "copySet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4314,
                  "name": "set1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "11232:16:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4313,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11232:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4316,
                  "name": "set2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "11250:16:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4315,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11250:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11231:36:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4318,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11276:0:9"
            },
            "scope": 4653,
            "src": "11215:332:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4432,
              "nodeType": "Block",
              "src": "11615:258:9",
              "statements": [
                {
                  "body": {
                    "id": 4430,
                    "nodeType": "Block",
                    "src": "11653:214:9",
                    "statements": [
                      {
                        "assignments": [
                          4392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4392,
                            "name": "keyServer",
                            "nodeType": "VariableDeclaration",
                            "scope": 4433,
                            "src": "11667:17:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4391,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11667:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4401,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4393,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4383,
                              "src": "11687:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4394,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "11687:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4400,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4395,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4383,
                                  "src": "11696:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4396,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11696:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4397,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11696:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11714:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "11696:19:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11687:29:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11667:49:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "11730:36:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4402,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4383,
                                "src": "11737:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4403,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "list",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3530,
                              "src": "11737:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4409,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4404,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4383,
                                    "src": "11746:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                    }
                                  },
                                  "id": 4405,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "list",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3530,
                                  "src": "11746:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 4406,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11746:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11764:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "11746:19:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11737:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4411,
                        "nodeType": "ExpressionStatement",
                        "src": "11730:36:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4412,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4383,
                                "src": "11780:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4415,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "list",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3530,
                              "src": "11780:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4416,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11780:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4417,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4383,
                                  "src": "11798:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4418,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11798:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4419,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11798:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11816:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "11798:19:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11780:37:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4423,
                        "nodeType": "ExpressionStatement",
                        "src": "11780:37:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "11831:25:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4424,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4383,
                                "src": "11838:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4425,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "map",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3534,
                              "src": "11838:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                              }
                            },
                            "id": 4427,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4426,
                              "name": "keyServer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4392,
                              "src": "11846:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11838:18:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4429,
                        "nodeType": "ExpressionStatement",
                        "src": "11831:25:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4386,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4383,
                          "src": "11632:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4387,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "11632:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4388,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11632:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4389,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11650:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11632:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4431,
                  "nodeType": "WhileStatement",
                  "src": "11625:242:9"
                }
              ]
            },
            "documentation": "Clear set.",
            "id": 4433,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4383,
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "scope": 4433,
                  "src": "11590:15:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4382,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11590:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11589:17:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4385,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11615:0:9"
            },
            "scope": 4653,
            "src": "11572:301:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4512,
              "nodeType": "Block",
              "src": "11993:404:9",
              "statements": [
                {
                  "body": {
                    "id": 4474,
                    "nodeType": "Block",
                    "src": "12047:135:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4456,
                                          "name": "set2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4437,
                                          "src": "12081:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                          }
                                        },
                                        "id": 4457,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "12081:8:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 4462,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4458,
                                            "name": "set1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4435,
                                            "src": "12090:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                            }
                                          },
                                          "id": 4459,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "list",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3530,
                                          "src": "12090:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 4461,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 4460,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4443,
                                          "src": "12100:1:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "12090:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12081:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 4463,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "12081:25:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 4455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12075:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 4464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12075:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 4454,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "12065:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 4465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12065:43:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 4467,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12122:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 4466,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "12112:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 4468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12112:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12065:60:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4473,
                        "nodeType": "IfStatement",
                        "src": "12061:111:9",
                        "trueBody": {
                          "id": 4472,
                          "nodeType": "Block",
                          "src": "12127:45:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 4470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12152:5:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 4441,
                              "id": 4471,
                              "nodeType": "Return",
                              "src": "12145:12:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4446,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4443,
                      "src": "12020:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4447,
                          "name": "set1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4435,
                          "src": "12024:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4448,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "12024:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4449,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12024:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12020:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4475,
                  "initializationExpression": {
                    "assignments": [
                      4443
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4443,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4513,
                        "src": "12008:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4442,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12008:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4445,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4444,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12017:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12008:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4452,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "12042:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4451,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4443,
                        "src": "12044:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4453,
                    "nodeType": "ExpressionStatement",
                    "src": "12042:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "12003:179:9"
                },
                {
                  "body": {
                    "id": 4508,
                    "nodeType": "Block",
                    "src": "12235:135:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4490,
                                          "name": "set1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4435,
                                          "src": "12269:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                          }
                                        },
                                        "id": 4491,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "12269:8:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 4496,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4492,
                                            "name": "set2",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4437,
                                            "src": "12278:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                            }
                                          },
                                          "id": 4493,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "list",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3530,
                                          "src": "12278:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 4495,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 4494,
                                          "name": "j",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4477,
                                          "src": "12288:1:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "12278:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12269:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 4497,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "12269:25:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 4489,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12263:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 4498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12263:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 4488,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "12253:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 4499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12253:43:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 4501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12310:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 4500,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "12300:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 4502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12300:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12253:60:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4507,
                        "nodeType": "IfStatement",
                        "src": "12249:111:9",
                        "trueBody": {
                          "id": 4506,
                          "nodeType": "Block",
                          "src": "12315:45:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 4504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12340:5:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 4441,
                              "id": 4505,
                              "nodeType": "Return",
                              "src": "12333:12:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4480,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "12208:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4481,
                          "name": "set2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4437,
                          "src": "12212:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4482,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "12212:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4483,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12212:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12208:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4509,
                  "initializationExpression": {
                    "assignments": [
                      4477
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4477,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 4513,
                        "src": "12196:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4476,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12196:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4479,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12205:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12196:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4486,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "12230:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4485,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4477,
                        "src": "12232:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4487,
                    "nodeType": "ExpressionStatement",
                    "src": "12230:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "12191:179:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 4510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12386:4:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 4441,
                  "id": 4511,
                  "nodeType": "Return",
                  "src": "12379:11:9"
                }
              ]
            },
            "documentation": "Are two sets equal?",
            "id": 4513,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "areEqualSets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4435,
                  "name": "set1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4513,
                  "src": "11929:16:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4434,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11929:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4437,
                  "name": "set2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4513,
                  "src": "11947:16:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4436,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11947:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11928:36:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4440,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4513,
                  "src": "11987:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4439,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11987:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11986:6:9"
            },
            "scope": 4653,
            "src": "11907:490:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4580,
              "nodeType": "Block",
              "src": "12547:435:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4525,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4515,
                              "src": "12624:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4526,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "12624:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4527,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12624:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "323536",
                          "id": 4528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12642:3:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "256"
                        },
                        "src": "12624:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e756d626572206f662073657276657273206d75737420626520736d616c6c6572207468616e203235362e",
                        "id": 4530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12647:45:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_84b480813803334fcb37184ba92cb5adf68f2818b628343d144f8ce3bb7827b2",
                          "typeString": "literal_string \"Number of servers must be smaller than 256.\""
                        },
                        "value": "Number of servers must be smaller than 256."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_84b480813803334fcb37184ba92cb5adf68f2818b628343d144f8ce3bb7827b2",
                          "typeString": "literal_string \"Number of servers must be smaller than 256.\""
                        }
                      ],
                      "id": 4524,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "12616:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12616:77:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4532,
                  "nodeType": "ExpressionStatement",
                  "src": "12616:77:9"
                },
                {
                  "assignments": [
                    4534
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4534,
                      "name": "keyServer",
                      "nodeType": "VariableDeclaration",
                      "scope": 4581,
                      "src": "12704:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4533,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12704:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4538,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4536,
                        "name": "keyServerPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4517,
                        "src": "12739:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 4535,
                      "name": "computeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4299,
                      "src": "12724:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory) pure returns (address)"
                      }
                    },
                    "id": 4537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12724:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12704:51:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4539,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4515,
                            "src": "12765:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                            }
                          },
                          "id": 4542,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "map",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3534,
                          "src": "12765:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                            "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                          }
                        },
                        "id": 4543,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4541,
                          "name": "keyServer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4534,
                          "src": "12773:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12765:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                        }
                      },
                      "id": 4544,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "index",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3522,
                      "src": "12765:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4546,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4515,
                              "src": "12798:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4547,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "12798:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4548,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12798:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12792:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 4549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12792:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "12765:49:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 4551,
                  "nodeType": "ExpressionStatement",
                  "src": "12765:49:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4552,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4515,
                            "src": "12824:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                            }
                          },
                          "id": 4555,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "map",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3534,
                          "src": "12824:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                            "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                          }
                        },
                        "id": 4556,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4554,
                          "name": "keyServer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4534,
                          "src": "12832:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12824:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                        }
                      },
                      "id": 4557,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "publicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3524,
                      "src": "12824:28:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4558,
                      "name": "keyServerPublic",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4517,
                      "src": "12855:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "12824:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 4560,
                  "nodeType": "ExpressionStatement",
                  "src": "12824:46:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4561,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4515,
                            "src": "12880:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                            }
                          },
                          "id": 4564,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "map",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3534,
                          "src": "12880:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                            "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                          }
                        },
                        "id": 4565,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4563,
                          "name": "keyServer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4534,
                          "src": "12888:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12880:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                        }
                      },
                      "id": 4566,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ip",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3526,
                      "src": "12880:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4567,
                      "name": "keyServerIp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4519,
                      "src": "12904:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "12880:35:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 4569,
                  "nodeType": "ExpressionStatement",
                  "src": "12880:35:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4575,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4534,
                        "src": "12939:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4570,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4515,
                          "src": "12925:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4573,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "12925:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4574,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12925:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 4576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12925:24:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4577,
                  "nodeType": "ExpressionStatement",
                  "src": "12925:24:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4578,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4534,
                    "src": "12966:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4523,
                  "id": 4579,
                  "nodeType": "Return",
                  "src": "12959:16:9"
                }
              ]
            },
            "documentation": "Append new key serer to set.",
            "id": 4581,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "appendToSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4515,
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "scope": 4581,
                  "src": "12461:15:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4514,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "12461:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4517,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 4581,
                  "src": "12478:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4516,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12478:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4519,
                  "name": "keyServerIp",
                  "nodeType": "VariableDeclaration",
                  "scope": 4581,
                  "src": "12501:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4518,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12501:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12460:60:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4522,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4581,
                  "src": "12538:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4521,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12538:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12537:9:9"
            },
            "scope": 4653,
            "src": "12440:542:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4651,
              "nodeType": "Block",
              "src": "13095:475:9",
              "statements": [
                {
                  "assignments": [
                    4589
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4589,
                      "name": "removedIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 4652,
                      "src": "13161:18:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4588,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "13161:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4597,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4591,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4583,
                              "src": "13188:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4592,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "map",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3534,
                            "src": "13188:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                              "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                            }
                          },
                          "id": 4594,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4593,
                            "name": "keyServer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4585,
                            "src": "13196:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13188:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                          }
                        },
                        "id": 4595,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3522,
                        "src": "13188:24:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 4590,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13182:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": "uint8"
                    },
                    "id": 4596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13182:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13161:52:9"
                },
                {
                  "assignments": [
                    4599
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4599,
                      "name": "lastIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 4652,
                      "src": "13223:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4598,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "13223:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4607,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 4606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4601,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4583,
                              "src": "13247:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4602,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "13247:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4603,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13247:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13241:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 4604,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13241:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13266:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "13241:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13223:44:9"
                },
                {
                  "assignments": [
                    4609
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4609,
                      "name": "lastKeyServer",
                      "nodeType": "VariableDeclaration",
                      "scope": 4652,
                      "src": "13277:21:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4608,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13277:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4614,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4610,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4583,
                        "src": "13301:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                        }
                      },
                      "id": 4611,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3530,
                      "src": "13301:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 4613,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4612,
                      "name": "lastIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4599,
                      "src": "13310:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13301:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13277:43:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4615,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4583,
                          "src": "13330:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4618,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "13330:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4619,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4617,
                        "name": "removedIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4589,
                        "src": "13339:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13330:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4620,
                      "name": "lastKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4609,
                      "src": "13355:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "13330:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4622,
                  "nodeType": "ExpressionStatement",
                  "src": "13330:38:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4623,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "13378:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                            }
                          },
                          "id": 4626,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "map",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3534,
                          "src": "13378:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                            "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                          }
                        },
                        "id": 4627,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4625,
                          "name": "lastKeyServer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4609,
                          "src": "13386:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13378:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                        }
                      },
                      "id": 4628,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "index",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3522,
                      "src": "13378:28:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4629,
                      "name": "removedIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4589,
                      "src": "13409:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "13378:43:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 4631,
                  "nodeType": "ExpressionStatement",
                  "src": "13378:43:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "13475:26:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4632,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4583,
                          "src": "13482:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4633,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "13482:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4635,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4634,
                        "name": "lastIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4599,
                        "src": "13491:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13482:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4637,
                  "nodeType": "ExpressionStatement",
                  "src": "13475:26:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "13511:25:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4638,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4583,
                          "src": "13518:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4639,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "13518:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 4641,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4640,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4585,
                        "src": "13526:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13518:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4643,
                  "nodeType": "ExpressionStatement",
                  "src": "13511:25:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4649,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "13546:17:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4644,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4583,
                          "src": "13546:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4647,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "13546:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4648,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13546:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4650,
                  "nodeType": "ExpressionStatement",
                  "src": "13546:17:9"
                }
              ]
            },
            "documentation": "Remove existing key server set.",
            "id": 4652,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeFromSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4583,
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "13051:15:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4582,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "13051:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4585,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "13068:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4584,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13068:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13050:36:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13095:0:9"
            },
            "scope": 4653,
            "src": "13028:542:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 4654,
        "src": "896:12676:9"
      }
    ],
    "src": "709:12863:9"
  },
  "legacyAST": {
    "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/set/OwnedKeyServerSetWithMigration.sol",
    "exportedSymbols": {
      "OwnedKeyServerSetWithMigration": [
        4653
      ]
    },
    "id": 4654,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3514,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "709:24:9"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 3515,
        "nodeType": "ImportDirective",
        "scope": 4654,
        "sourceUnit": 4824,
        "src": "735:63:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/aznagy/work/secretstore/secretstore-contracts/contracts/interfaces/KeyServerSet.sol",
        "file": "../interfaces/KeyServerSet.sol",
        "id": 3516,
        "nodeType": "ImportDirective",
        "scope": 4654,
        "sourceUnit": 577,
        "src": "799:40:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3517,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4823,
              "src": "939:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4823",
                "typeString": "contract Ownable"
              }
            },
            "id": 3518,
            "nodeType": "InheritanceSpecifier",
            "src": "939:7:9"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3519,
              "name": "KeyServerSetWithMigration",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 576,
              "src": "948:25:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KeyServerSetWithMigration_$576",
                "typeString": "contract KeyServerSetWithMigration"
              }
            },
            "id": 3520,
            "nodeType": "InheritanceSpecifier",
            "src": "948:25:9"
          }
        ],
        "contractDependencies": [
          576,
          4823
        ],
        "contractKind": "contract",
        "documentation": "Single-owned KeyServerSet with migration support.",
        "fullyImplemented": true,
        "id": 4653,
        "linearizedBaseContracts": [
          4653,
          576,
          4823
        ],
        "name": "OwnedKeyServerSetWithMigration",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "OwnedKeyServerSetWithMigration.KeyServer",
            "id": 3527,
            "members": [
              {
                "constant": false,
                "id": 3522,
                "name": "index",
                "nodeType": "VariableDeclaration",
                "scope": 3527,
                "src": "1053:11:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 3521,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1053:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3524,
                "name": "publicKey",
                "nodeType": "VariableDeclaration",
                "scope": 3527,
                "src": "1112:15:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 3523,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1112:5:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3526,
                "name": "ip",
                "nodeType": "VariableDeclaration",
                "scope": 3527,
                "src": "1175:9:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 3525,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1175:6:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "KeyServer",
            "nodeType": "StructDefinition",
            "scope": 4653,
            "src": "985:206:9",
            "visibility": "public"
          },
          {
            "canonicalName": "OwnedKeyServerSetWithMigration.Set",
            "id": 3535,
            "members": [
              {
                "constant": false,
                "id": 3530,
                "name": "list",
                "nodeType": "VariableDeclaration",
                "scope": 3535,
                "src": "1269:14:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3528,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1269:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3529,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1269:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3534,
                "name": "map",
                "nodeType": "VariableDeclaration",
                "scope": 3535,
                "src": "1346:33:9",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                  "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer)"
                },
                "typeName": {
                  "id": 3533,
                  "keyType": {
                    "id": 3531,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1354:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1346:29:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                    "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 3532,
                    "name": "KeyServer",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3527,
                    "src": "1365:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Set",
            "nodeType": "StructDefinition",
            "scope": 4653,
            "src": "1197:189:9",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3537,
            "name": "isInitialized",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1416:18:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 3536,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1416:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3539,
            "name": "currentSetChangeBlock",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1471:29:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3538,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1471:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3541,
            "name": "currentSet",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1539:14:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Set_$3535_storage",
              "typeString": "struct OwnedKeyServerSetWithMigration.Set"
            },
            "typeName": {
              "contractScope": null,
              "id": 3540,
              "name": "Set",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3535,
              "src": "1539:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                "typeString": "struct OwnedKeyServerSetWithMigration.Set"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3543,
            "name": "migrationSet",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1594:16:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Set_$3535_storage",
              "typeString": "struct OwnedKeyServerSetWithMigration.Set"
            },
            "typeName": {
              "contractScope": null,
              "id": 3542,
              "name": "Set",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3535,
              "src": "1594:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                "typeString": "struct OwnedKeyServerSetWithMigration.Set"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3545,
            "name": "newSet",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1645:10:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Set_$3535_storage",
              "typeString": "struct OwnedKeyServerSetWithMigration.Set"
            },
            "typeName": {
              "contractScope": null,
              "id": 3544,
              "name": "Set",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3535,
              "src": "1645:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                "typeString": "struct OwnedKeyServerSetWithMigration.Set"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3547,
            "name": "migrationMaster",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1687:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3546,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1687:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3549,
            "name": "migrationId",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1738:19:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 3548,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1738:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 3553,
            "name": "migrationConfirmations",
            "nodeType": "VariableDeclaration",
            "scope": 4653,
            "src": "1805:47:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 3552,
              "keyType": {
                "id": 3550,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1813:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1805:24:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 3551,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1824:4:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3572,
              "nodeType": "Block",
              "src": "1899:125:9",
              "statements": [
                {
                  "assignments": [
                    3558
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3558,
                      "name": "castValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 3573,
                      "src": "1909:22:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3557,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1909:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3562,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3560,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3555,
                        "src": "1940:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 3559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1934:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                        "typeString": "type(bytes storage pointer)"
                      },
                      "typeName": "bytes"
                    },
                    "id": 3561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1934:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1909:37:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3564,
                            "name": "castValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3558,
                            "src": "1964:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1964:16:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1984:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1964:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "537472696e6720697320656d7074792e",
                        "id": 3568,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1987:18:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_aeb6d643af0369a6363fb8576af2305f659b71987766fc28e085f59ce3be38a7",
                          "typeString": "literal_string \"String is empty.\""
                        },
                        "value": "String is empty."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_aeb6d643af0369a6363fb8576af2305f659b71987766fc28e085f59ce3be38a7",
                          "typeString": "literal_string \"String is empty.\""
                        }
                      ],
                      "id": 3563,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "1956:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1956:50:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3570,
                  "nodeType": "ExpressionStatement",
                  "src": "1956:50:9"
                },
                {
                  "id": 3571,
                  "nodeType": "PlaceholderStatement",
                  "src": "2016:1:9"
                }
              ]
            },
            "documentation": null,
            "id": 3573,
            "name": "notAnEmptyString",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3555,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 3573,
                  "src": "1885:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3554,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1885:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1884:14:9"
            },
            "src": "1859:165:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3585,
              "nodeType": "Block",
              "src": "2115:93:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3579,
                            "name": "keyServerPublic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3575,
                            "src": "2145:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 3578,
                          "name": "checkPublic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4312,
                          "src": "2133:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (bytes memory) pure returns (bool)"
                          }
                        },
                        "id": 3580,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2133:28:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5075626c6963206b6579206973206e6f742076616c69642e",
                        "id": 3581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2163:26:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7da3fda962f2872ab8782297844eb72485ecb2e74537ffcfb05b9e5c3c717e43",
                          "typeString": "literal_string \"Public key is not valid.\""
                        },
                        "value": "Public key is not valid."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7da3fda962f2872ab8782297844eb72485ecb2e74537ffcfb05b9e5c3c717e43",
                          "typeString": "literal_string \"Public key is not valid.\""
                        }
                      ],
                      "id": 3577,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2125:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2125:65:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3583,
                  "nodeType": "ExpressionStatement",
                  "src": "2125:65:9"
                },
                {
                  "id": 3584,
                  "nodeType": "PlaceholderStatement",
                  "src": "2200:1:9"
                }
              ]
            },
            "documentation": "Only if valid public is passed",
            "id": 3586,
            "name": "isValidPublic",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3575,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 3586,
                  "src": "2092:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3574,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2092:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2091:23:9"
            },
            "src": "2069:139:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3608,
              "nodeType": "Block",
              "src": "2313:137:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3593,
                                        "name": "currentSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3541,
                                        "src": "2347:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                        }
                                      },
                                      "id": 3594,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "map",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3534,
                                      "src": "2347:14:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                      }
                                    },
                                    "id": 3596,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3595,
                                      "name": "keyServer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3588,
                                      "src": "2362:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2347:25:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                    }
                                  },
                                  "id": 3597,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "2347:28:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2341:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2341:35:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3591,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2331:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2331:46:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2391:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3600,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2381:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2381:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2331:63:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536572766572206973206e6f7420696e207468652063757272656e74207365742e",
                        "id": 3604,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2396:35:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2a149919b46c505b823fb2ba63c3de4f4c8b8e08633493aef048705acb1b1924",
                          "typeString": "literal_string \"Server is not in the current set.\""
                        },
                        "value": "Server is not in the current set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2a149919b46c505b823fb2ba63c3de4f4c8b8e08633493aef048705acb1b1924",
                          "typeString": "literal_string \"Server is not in the current set.\""
                        }
                      ],
                      "id": 3590,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2323:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2323:109:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3606,
                  "nodeType": "ExpressionStatement",
                  "src": "2323:109:9"
                },
                {
                  "id": 3607,
                  "nodeType": "PlaceholderStatement",
                  "src": "2442:1:9"
                }
              ]
            },
            "documentation": "Only run if server is currently on current set.",
            "id": 3609,
            "name": "isOnCurrentSet",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3588,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3609,
                  "src": "2294:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3587,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2294:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2293:19:9"
            },
            "src": "2270:180:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3631,
              "nodeType": "Block",
              "src": "2559:142:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3616,
                                        "name": "migrationSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3543,
                                        "src": "2593:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                        }
                                      },
                                      "id": 3617,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "map",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3534,
                                      "src": "2593:16:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                      }
                                    },
                                    "id": 3619,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3618,
                                      "name": "keyServer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3611,
                                      "src": "2610:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2593:27:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                    }
                                  },
                                  "id": 3620,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "2593:30:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2587:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2587:37:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3614,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2577:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2577:48:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2639:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3623,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2629:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2629:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2577:65:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536572766572206973206e6f7420696e20746865206d6967726174696f6e73207365742e",
                        "id": 3627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2644:38:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9b393c94d4c40d370f096155a9e11690885f44c8e894db3f5b93f0686323e315",
                          "typeString": "literal_string \"Server is not in the migrations set.\""
                        },
                        "value": "Server is not in the migrations set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9b393c94d4c40d370f096155a9e11690885f44c8e894db3f5b93f0686323e315",
                          "typeString": "literal_string \"Server is not in the migrations set.\""
                        }
                      ],
                      "id": 3613,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2569:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2569:114:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3629,
                  "nodeType": "ExpressionStatement",
                  "src": "2569:114:9"
                },
                {
                  "id": 3630,
                  "nodeType": "PlaceholderStatement",
                  "src": "2693:1:9"
                }
              ]
            },
            "documentation": "Only run if server is currently on migration set.",
            "id": 3632,
            "name": "isOnMigrationSet",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3612,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3611,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3632,
                  "src": "2540:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3610,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2540:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2539:19:9"
            },
            "src": "2514:187:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3654,
              "nodeType": "Block",
              "src": "2798:129:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3639,
                                        "name": "newSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3545,
                                        "src": "2832:6:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                        }
                                      },
                                      "id": 3640,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "map",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3534,
                                      "src": "2832:10:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                      }
                                    },
                                    "id": 3642,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3641,
                                      "name": "keyServer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3634,
                                      "src": "2843:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2832:21:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                    }
                                  },
                                  "id": 3643,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "2832:24:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2826:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2826:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3637,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2816:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2816:42:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2872:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3646,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "2862:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2862:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2816:59:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536572766572206973206e6f7420696e20746865206e6577207365742e",
                        "id": 3650,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2877:31:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ba9408253832ba564fbcd676aa5db6cd9ece2e76f5679fb6b85bd781148bfb95",
                          "typeString": "literal_string \"Server is not in the new set.\""
                        },
                        "value": "Server is not in the new set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ba9408253832ba564fbcd676aa5db6cd9ece2e76f5679fb6b85bd781148bfb95",
                          "typeString": "literal_string \"Server is not in the new set.\""
                        }
                      ],
                      "id": 3636,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "2808:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2808:101:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3652,
                  "nodeType": "ExpressionStatement",
                  "src": "2808:101:9"
                },
                {
                  "id": 3653,
                  "nodeType": "PlaceholderStatement",
                  "src": "2919:1:9"
                }
              ]
            },
            "documentation": "Only run if server is currently on new set.",
            "id": 3655,
            "name": "isOnNewSet",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3634,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3655,
                  "src": "2779:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3633,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2779:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2778:19:9"
            },
            "src": "2759:168:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3677,
              "nodeType": "Block",
              "src": "3027:125:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3662,
                                        "name": "newSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3545,
                                        "src": "3061:6:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                        }
                                      },
                                      "id": 3663,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "map",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3534,
                                      "src": "3061:10:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                      }
                                    },
                                    "id": 3665,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3664,
                                      "name": "keyServer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3657,
                                      "src": "3072:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3061:21:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                    }
                                  },
                                  "id": 3666,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "3061:24:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3055:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3055:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3660,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "3045:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3045:42:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3101:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3669,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "3091:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3091:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "3045:59:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "53657276657220697320696e20746865206e6577207365742e",
                        "id": 3673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3106:27:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6bca122ab425237bdb0e412c78f77a734f1d9966fdd2b4a4d689fb87f55165f6",
                          "typeString": "literal_string \"Server is in the new set.\""
                        },
                        "value": "Server is in the new set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6bca122ab425237bdb0e412c78f77a734f1d9966fdd2b4a4d689fb87f55165f6",
                          "typeString": "literal_string \"Server is in the new set.\""
                        }
                      ],
                      "id": 3659,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3037:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3037:97:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3675,
                  "nodeType": "ExpressionStatement",
                  "src": "3037:97:9"
                },
                {
                  "id": 3676,
                  "nodeType": "PlaceholderStatement",
                  "src": "3144:1:9"
                }
              ]
            },
            "documentation": "Only run if server is currently on new set.",
            "id": 3678,
            "name": "isNotOnNewSet",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3658,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3657,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "3008:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3656,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3008:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3007:19:9"
            },
            "src": "2985:167:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3690,
              "nodeType": "Block",
              "src": "3232:99:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3681,
                          "name": "migrationMaster",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3547,
                          "src": "3250:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3277:1:9",
                              "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": 3682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3269:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3269:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3250:29:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546865726520697320616e20616374697665206d6967726174696f6e2e",
                        "id": 3686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3281:31:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df49113d0023d4a08e7a834030db3d9e7135e5bacd4c3a6f256c57a82dc160be",
                          "typeString": "literal_string \"There is an active migration.\""
                        },
                        "value": "There is an active migration."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df49113d0023d4a08e7a834030db3d9e7135e5bacd4c3a6f256c57a82dc160be",
                          "typeString": "literal_string \"There is an active migration.\""
                        }
                      ],
                      "id": 3680,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3242:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3242:71:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3688,
                  "nodeType": "ExpressionStatement",
                  "src": "3242:71:9"
                },
                {
                  "id": 3689,
                  "nodeType": "PlaceholderStatement",
                  "src": "3323:1:9"
                }
              ]
            },
            "documentation": "Only when no active migration process.",
            "id": 3691,
            "name": "noActiveMigration",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3679,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3232:0:9"
            },
            "src": "3205:126:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3703,
              "nodeType": "Block",
              "src": "3434:96:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3696,
                          "name": "migrationId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3549,
                          "src": "3452:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3697,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3693,
                          "src": "3467:2:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "3452:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e207769746820676976656e206964206973206e6f74206163746976652e",
                        "id": 3699,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3471:40:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d44db64c6788c5f8b045537c0ba6a61aa617fabb0b62a2a14b3ccbc16b822007",
                          "typeString": "literal_string \"Migration with given id is not active.\""
                        },
                        "value": "Migration with given id is not active."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d44db64c6788c5f8b045537c0ba6a61aa617fabb0b62a2a14b3ccbc16b822007",
                          "typeString": "literal_string \"Migration with given id is not active.\""
                        }
                      ],
                      "id": 3695,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3444:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3444:68:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3701,
                  "nodeType": "ExpressionStatement",
                  "src": "3444:68:9"
                },
                {
                  "id": 3702,
                  "nodeType": "PlaceholderStatement",
                  "src": "3522:1:9"
                }
              ]
            },
            "documentation": "Only when migration with given id is in progress.",
            "id": 3704,
            "name": "isActiveMigration",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3693,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3704,
                  "src": "3422:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3692,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3422:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3421:12:9"
            },
            "src": "3395:135:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3718,
              "nodeType": "Block",
              "src": "3617:83:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3709,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3706,
                          "src": "3635:2:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3649:1:9",
                              "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": 3710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3641:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": "bytes32"
                          },
                          "id": 3712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3641:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "3635:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e206964206973206e6f742076616c69642e",
                        "id": 3714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3653:28:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b1eb1f09cecb920f563c6fc3534e354bb6b52c1e904cf5ded3e2494157c0e4be",
                          "typeString": "literal_string \"Migration id is not valid.\""
                        },
                        "value": "Migration id is not valid."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b1eb1f09cecb920f563c6fc3534e354bb6b52c1e904cf5ded3e2494157c0e4be",
                          "typeString": "literal_string \"Migration id is not valid.\""
                        }
                      ],
                      "id": 3708,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3627:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3627:55:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3716,
                  "nodeType": "ExpressionStatement",
                  "src": "3627:55:9"
                },
                {
                  "id": 3717,
                  "nodeType": "PlaceholderStatement",
                  "src": "3692:1:9"
                }
              ]
            },
            "documentation": "Only when migration id is valid.",
            "id": 3719,
            "name": "isValidMigrationId",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3707,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3706,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3719,
                  "src": "3605:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3705,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3605:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3604:12:9"
            },
            "src": "3577:123:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3731,
              "nodeType": "Block",
              "src": "3778:100:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3796:33:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3723,
                              "name": "currentSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3541,
                              "src": "3810:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3724,
                              "name": "newSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3545,
                              "src": "3822:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              },
                              {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            ],
                            "id": 3722,
                            "name": "areEqualSets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4513,
                            "src": "3797:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3535_storage_ptr_$_t_struct$_Set_$3535_storage_ptr_$returns$_t_bool_$",
                              "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,struct OwnedKeyServerSetWithMigration.Set storage pointer) view returns (bool)"
                            }
                          },
                          "id": 3725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3797:32:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e206973206e6f742072657175697265642e",
                        "id": 3727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3831:28:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_75840d33a4c3d5675c0f431e83a4e56e4b83b62125a8529abec73bdec2abcad1",
                          "typeString": "literal_string \"Migration is not required.\""
                        },
                        "value": "Migration is not required."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_75840d33a4c3d5675c0f431e83a4e56e4b83b62125a8529abec73bdec2abcad1",
                          "typeString": "literal_string \"Migration is not required.\""
                        }
                      ],
                      "id": 3721,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "3788:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3788:72:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3729,
                  "nodeType": "ExpressionStatement",
                  "src": "3788:72:9"
                },
                {
                  "id": 3730,
                  "nodeType": "PlaceholderStatement",
                  "src": "3870:1:9"
                }
              ]
            },
            "documentation": "Only when migration is required.",
            "id": 3732,
            "name": "whenMigrationRequired",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3720,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3778:0:9"
            },
            "src": "3747:131:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3768,
              "nodeType": "Block",
              "src": "3992:254:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3763,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3737,
                                          "name": "currentSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3541,
                                          "src": "4039:10:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                          }
                                        },
                                        "id": 3738,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "4039:14:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 3741,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3739,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4838,
                                          "src": "4054:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 3740,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4054:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4039:26:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 3742,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "4039:29:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 3736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4033:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 3743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4033:36:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 3735,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4023:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4023:47:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4084:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 3745,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4074:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4074:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4023:64:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3751,
                                          "name": "newSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3545,
                                          "src": "4119:6:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                          }
                                        },
                                        "id": 3752,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "4119:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 3755,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3753,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4838,
                                          "src": "4130:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 3754,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4130:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4119:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 3756,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "4119:25:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 3750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4113:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 3757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4113:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 3749,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4103:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4103:43:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4160:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 3759,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4150:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4150:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4103:60:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4023:140:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "53656e646572206973206e6f74206120706f74656e7469616c206d6967726174696f6e207061727469636970616e742e",
                        "id": 3764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4177:50:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3102486dd897d54ffc7672fc77c92635c29374db6bcdfe8cd3dbe3ae019493c2",
                          "typeString": "literal_string \"Sender is not a potential migration participant.\""
                        },
                        "value": "Sender is not a potential migration participant."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3102486dd897d54ffc7672fc77c92635c29374db6bcdfe8cd3dbe3ae019493c2",
                          "typeString": "literal_string \"Sender is not a potential migration participant.\""
                        }
                      ],
                      "id": 3734,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "4002:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4002:226:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3766,
                  "nodeType": "ExpressionStatement",
                  "src": "4002:226:9"
                },
                {
                  "id": 3767,
                  "nodeType": "PlaceholderStatement",
                  "src": "4238:1:9"
                }
              ]
            },
            "documentation": "Only run when sender is potential participant of migration.",
            "id": 3769,
            "name": "isPossibleMigrationParticipant",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3733,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3992:0:9"
            },
            "src": "3952:294:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3805,
              "nodeType": "Block",
              "src": "4361:248:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3776,
                                          "name": "currentSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3541,
                                          "src": "4408:10:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                          }
                                        },
                                        "id": 3777,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "4408:14:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 3779,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3778,
                                        "name": "keyServer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3771,
                                        "src": "4423:9:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4408:25:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 3780,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "4408:28:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 3775,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4402:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 3781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4402:35:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 3774,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4392:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4392:46:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3784,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4452:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 3783,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4442:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3785,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4442:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4392:63:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3789,
                                          "name": "migrationSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3543,
                                          "src": "4487:12:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                          }
                                        },
                                        "id": 3790,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "4487:16:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 3792,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3791,
                                        "name": "keyServer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3771,
                                        "src": "4504:9:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4487:27:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 3793,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "4487:30:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 3788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4481:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 3794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4481:37:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 3787,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4471:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4471:48:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 3797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4533:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 3796,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "4523:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 3798,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4523:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4471:65:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4392:144:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "536572766572206973206e6f742061206d6967726174696f6e207061727469636970616e742e",
                        "id": 3801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4550:40:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4580eaf6bff276689a07e894bdcf1bb0c3b076a26c8e0408f51e41c9d41312da",
                          "typeString": "literal_string \"Server is not a migration participant.\""
                        },
                        "value": "Server is not a migration participant."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4580eaf6bff276689a07e894bdcf1bb0c3b076a26c8e0408f51e41c9d41312da",
                          "typeString": "literal_string \"Server is not a migration participant.\""
                        }
                      ],
                      "id": 3773,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "4371:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4371:220:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3803,
                  "nodeType": "ExpressionStatement",
                  "src": "4371:220:9"
                },
                {
                  "id": 3804,
                  "nodeType": "PlaceholderStatement",
                  "src": "4601:1:9"
                }
              ]
            },
            "documentation": "Only run when sender is participant of migration.",
            "id": 3806,
            "name": "isMigrationParticipant",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 3772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3771,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3806,
                  "src": "4342:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3770,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4342:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4341:19:9"
            },
            "src": "4310:299:9",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3813,
              "nodeType": "Block",
              "src": "4684:69:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6e747261637420646f6573206e6f7420737570706f727420646972656374207061796d656e74732e",
                        "id": 3810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4701:44:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e52559f46e5ad6cd8f1b8202b4eaacdd6d199d8fd01c7d79b01fd0203b757eac",
                          "typeString": "literal_string \"Contract does not support direct payments.\""
                        },
                        "value": "Contract does not support direct payments."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_e52559f46e5ad6cd8f1b8202b4eaacdd6d199d8fd01c7d79b01fd0203b757eac",
                          "typeString": "literal_string \"Contract does not support direct payments.\""
                        }
                      ],
                      "id": 3809,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4843,
                        4844
                      ],
                      "referencedDeclaration": 4844,
                      "src": "4694:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) pure"
                      }
                    },
                    "id": 3811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4694:52:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3812,
                  "nodeType": "ExpressionStatement",
                  "src": "4694:52:9"
                }
              ]
            },
            "documentation": "We do not support direct payments.",
            "id": 3814,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3807,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4666:2:9"
            },
            "payable": true,
            "returnParameters": {
              "id": 3808,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4684:0:9"
            },
            "scope": 4653,
            "src": "4658:95:9",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3821,
              "nodeType": "Block",
              "src": "4896:45:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3819,
                    "name": "currentSetChangeBlock",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3539,
                    "src": "4913:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3818,
                  "id": 3820,
                  "nodeType": "Return",
                  "src": "4906:28:9"
                }
              ]
            },
            "documentation": "Get number of block when current set has been changed last time.",
            "id": 3822,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentLastChange",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3815,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4861:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3817,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3822,
                  "src": "4887:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3816,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4887:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4886:9:9"
            },
            "scope": 4653,
            "src": "4832:109:9",
            "stateMutability": "view",
            "superFunction": 469,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3853,
              "nodeType": "Block",
              "src": "5084:183:9",
              "statements": [
                {
                  "assignments": [
                    3830
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3830,
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "scope": 3854,
                      "src": "5094:23:9",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3829,
                        "name": "KeyServer",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3527,
                        "src": "5094:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3835,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3831,
                        "name": "currentSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3541,
                        "src": "5120:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      "id": 3832,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "map",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3534,
                      "src": "5120:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                        "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                      }
                    },
                    "id": 3834,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3833,
                      "name": "keyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3824,
                      "src": "5135:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5120:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5094:51:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 3846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3839,
                                    "name": "entry",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3830,
                                    "src": "5179:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage pointer"
                                    }
                                  },
                                  "id": 3840,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ip",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3526,
                                  "src": "5179:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                ],
                                "id": 3838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5173:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 3841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5173:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            ],
                            "id": 3837,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "5163:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5163:26:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5203:2:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3843,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4832,
                            "src": "5193:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                              "typeString": "function () pure returns (bytes32)"
                            }
                          },
                          "id": 3845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5193:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "5163:43:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e74727920646f6573206e6f742065786973742e",
                        "id": 3847,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5208:23:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_83ebfcd36c786c4c3b423c67c3b07911de7e03a44effb2d1ce1a322f4d548f68",
                          "typeString": "literal_string \"Entry does not exist.\""
                        },
                        "value": "Entry does not exist."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_83ebfcd36c786c4c3b423c67c3b07911de7e03a44effb2d1ce1a322f4d548f68",
                          "typeString": "literal_string \"Entry does not exist.\""
                        }
                      ],
                      "id": 3836,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "5155:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5155:77:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3849,
                  "nodeType": "ExpressionStatement",
                  "src": "5155:77:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3850,
                      "name": "entry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3830,
                      "src": "5249:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage_ptr",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage pointer"
                      }
                    },
                    "id": 3851,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "index",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3522,
                    "src": "5249:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 3828,
                  "id": 3852,
                  "nodeType": "Return",
                  "src": "5242:18:9"
                }
              ]
            },
            "documentation": "Get index of given key server in current set.",
            "id": 3854,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentKeyServerIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3824,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3854,
                  "src": "5035:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3823,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5035:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5034:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3828,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3827,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3854,
                  "src": "5077:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3826,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5077:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5076:7:9"
            },
            "scope": 4653,
            "src": "5001:266:9",
            "stateMutability": "view",
            "superFunction": 476,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3865,
              "nodeType": "Block",
              "src": "5389:53:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3860,
                            "name": "currentSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3541,
                            "src": "5412:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                            }
                          },
                          "id": 3861,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "list",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3530,
                          "src": "5412:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 3862,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5412:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3859,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "5406:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": "uint8"
                    },
                    "id": 3863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5406:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 3858,
                  "id": 3864,
                  "nodeType": "Return",
                  "src": "5399:36:9"
                }
              ]
            },
            "documentation": "Get count of key servers in current set.",
            "id": 3866,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentKeyServersCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3855,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5356:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3858,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3857,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3866,
                  "src": "5382:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3856,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5382:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5381:7:9"
            },
            "scope": 4653,
            "src": "5322:120:9",
            "stateMutability": "view",
            "superFunction": 481,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3887,
              "nodeType": "Block",
              "src": "5572:122:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3874,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3868,
                          "src": "5590:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3875,
                              "name": "currentSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3541,
                              "src": "5598:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            "id": 3876,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "5598:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 3877,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5598:22:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5590:30:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e646578206973206f7574206f6620626f756e64732e",
                        "id": 3879,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5622:25:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9bcbe5b2ccebeddef4e1871345b6aa9f87b6dc1cd3e2474789df3ae18e4d3edf",
                          "typeString": "literal_string \"Index is out of bounds.\""
                        },
                        "value": "Index is out of bounds."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9bcbe5b2ccebeddef4e1871345b6aa9f87b6dc1cd3e2474789df3ae18e4d3edf",
                          "typeString": "literal_string \"Index is out of bounds.\""
                        }
                      ],
                      "id": 3873,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "5582:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5582:66:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3881,
                  "nodeType": "ExpressionStatement",
                  "src": "5582:66:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3882,
                        "name": "currentSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3541,
                        "src": "5665:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      "id": 3883,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3530,
                      "src": "5665:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 3885,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3884,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3868,
                      "src": "5681:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5665:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3872,
                  "id": 3886,
                  "nodeType": "Return",
                  "src": "5658:29:9"
                }
              ]
            },
            "documentation": "Get address of key server in current set.",
            "id": 3888,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentKeyServer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3868,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 3888,
                  "src": "5527:11:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3867,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5527:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5526:13:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3871,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3888,
                  "src": "5563:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3870,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5563:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5562:9:9"
            },
            "scope": 4653,
            "src": "5498:196:9",
            "stateMutability": "view",
            "superFunction": 488,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3897,
              "nodeType": "Block",
              "src": "5803:39:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3894,
                      "name": "currentSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3541,
                      "src": "5820:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$3535_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                      }
                    },
                    "id": 3895,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "list",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3530,
                    "src": "5820:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 3893,
                  "id": 3896,
                  "nodeType": "Return",
                  "src": "5813:22:9"
                }
              ]
            },
            "documentation": "Get all current key servers.",
            "id": 3898,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getCurrentKeyServers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3889,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5766:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3893,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3892,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3898,
                  "src": "5792:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3890,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5792:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3891,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5792:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5791:11:9"
            },
            "scope": 4653,
            "src": "5737:105:9",
            "stateMutability": "view",
            "superFunction": 494,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3914,
              "nodeType": "Block",
              "src": "6001:59:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3908,
                          "name": "currentSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3541,
                          "src": "6018:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3909,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "6018:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3911,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3910,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3900,
                        "src": "6033:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6018:25:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 3912,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "publicKey",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3524,
                    "src": "6018:35:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 3907,
                  "id": 3913,
                  "nodeType": "Return",
                  "src": "6011:42:9"
                }
              ]
            },
            "documentation": "Get current key server public key.",
            "id": 3915,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3903,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3900,
                    "src": "5974:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3904,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3902,
                  "name": "isOnCurrentSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3609,
                  "src": "5959:14:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5959:25:9"
              }
            ],
            "name": "getCurrentKeyServerPublic",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3900,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3915,
                  "src": "5926:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3899,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5926:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5925:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3907,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3906,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3915,
                  "src": "5994:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3905,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5994:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5993:7:9"
            },
            "scope": 4653,
            "src": "5891:169:9",
            "stateMutability": "view",
            "superFunction": 501,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3931,
              "nodeType": "Block",
              "src": "6218:52:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3925,
                          "name": "currentSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3541,
                          "src": "6235:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3926,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "6235:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3928,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3927,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3917,
                        "src": "6250:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6235:25:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 3929,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ip",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3526,
                    "src": "6235:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 3924,
                  "id": 3930,
                  "nodeType": "Return",
                  "src": "6228:35:9"
                }
              ]
            },
            "documentation": "Get current key server address.",
            "id": 3932,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3920,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3917,
                    "src": "6190:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3921,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3919,
                  "name": "isOnCurrentSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3609,
                  "src": "6175:14:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6175:25:9"
              }
            ],
            "name": "getCurrentKeyServerAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3917,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3932,
                  "src": "6142:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6142:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6141:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3924,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3923,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3932,
                  "src": "6210:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3922,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6210:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6209:8:9"
            },
            "scope": 4653,
            "src": "6106:164:9",
            "stateMutability": "view",
            "superFunction": 508,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3941,
              "nodeType": "Block",
              "src": "6383:41:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3938,
                      "name": "migrationSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3543,
                      "src": "6400:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$3535_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                      }
                    },
                    "id": 3939,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "list",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3530,
                    "src": "6400:17:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 3937,
                  "id": 3940,
                  "nodeType": "Return",
                  "src": "6393:24:9"
                }
              ]
            },
            "documentation": "Get all migration key servers.",
            "id": 3942,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getMigrationKeyServers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3933,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6346:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3936,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3942,
                  "src": "6372:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3934,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6372:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3935,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6372:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6371:11:9"
            },
            "scope": 4653,
            "src": "6315:109:9",
            "stateMutability": "view",
            "superFunction": 514,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3958,
              "nodeType": "Block",
              "src": "6589:61:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3952,
                          "name": "migrationSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3543,
                          "src": "6606:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3953,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "6606:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3955,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3954,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3944,
                        "src": "6623:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6606:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 3956,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "publicKey",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3524,
                    "src": "6606:37:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 3951,
                  "id": 3957,
                  "nodeType": "Return",
                  "src": "6599:44:9"
                }
              ]
            },
            "documentation": "Get migration key server public key.",
            "id": 3959,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3947,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3944,
                    "src": "6562:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3948,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3946,
                  "name": "isOnMigrationSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3632,
                  "src": "6545:16:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6545:27:9"
              }
            ],
            "name": "getMigrationKeyServerPublic",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3944,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3959,
                  "src": "6512:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3943,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6512:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6511:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3950,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3959,
                  "src": "6582:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3949,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6582:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6581:7:9"
            },
            "scope": 4653,
            "src": "6475:175:9",
            "stateMutability": "view",
            "superFunction": 521,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3975,
              "nodeType": "Block",
              "src": "6814:54:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3969,
                          "name": "migrationSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3543,
                          "src": "6831:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3970,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "6831:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3972,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3971,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3961,
                        "src": "6848:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6831:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 3973,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ip",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3526,
                    "src": "6831:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 3968,
                  "id": 3974,
                  "nodeType": "Return",
                  "src": "6824:37:9"
                }
              ]
            },
            "documentation": "Get migration key server address.",
            "id": 3976,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3964,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3961,
                    "src": "6786:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3965,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3963,
                  "name": "isOnMigrationSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3632,
                  "src": "6769:16:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6769:27:9"
              }
            ],
            "name": "getMigrationKeyServerAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3961,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3976,
                  "src": "6736:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3960,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6736:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6735:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3968,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3967,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3976,
                  "src": "6806:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3966,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6806:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6805:8:9"
            },
            "scope": 4653,
            "src": "6698:170:9",
            "stateMutability": "view",
            "superFunction": 528,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3985,
              "nodeType": "Block",
              "src": "6969:35:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3982,
                      "name": "newSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3545,
                      "src": "6986:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$3535_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                      }
                    },
                    "id": 3983,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "list",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3530,
                    "src": "6986:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 3981,
                  "id": 3984,
                  "nodeType": "Return",
                  "src": "6979:18:9"
                }
              ]
            },
            "documentation": "Get all new key servers.",
            "id": 3986,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getNewKeyServers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3977,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6932:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3980,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3986,
                  "src": "6958:9:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3978,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6958:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3979,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6958:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6957:11:9"
            },
            "scope": 4653,
            "src": "6907:97:9",
            "stateMutability": "view",
            "superFunction": 534,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4002,
              "nodeType": "Block",
              "src": "7151:55:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3996,
                          "name": "newSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3545,
                          "src": "7168:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 3997,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "7168:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 3999,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3998,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3988,
                        "src": "7179:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7168:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 4000,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "publicKey",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3524,
                    "src": "7168:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 3995,
                  "id": 4001,
                  "nodeType": "Return",
                  "src": "7161:38:9"
                }
              ]
            },
            "documentation": "Get new key server public key.",
            "id": 4003,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3991,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3988,
                    "src": "7124:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3992,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3990,
                  "name": "isOnNewSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3655,
                  "src": "7113:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7113:21:9"
              }
            ],
            "name": "getNewKeyServerPublic",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3988,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4003,
                  "src": "7080:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3987,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7080:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7079:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 3995,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3994,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4003,
                  "src": "7144:5:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3993,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7144:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7143:7:9"
            },
            "scope": 4653,
            "src": "7049:157:9",
            "stateMutability": "view",
            "superFunction": 541,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4019,
              "nodeType": "Block",
              "src": "7352:48:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4013,
                          "name": "newSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3545,
                          "src": "7369:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 4014,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "7369:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 4016,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4015,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4005,
                        "src": "7380:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7369:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "id": 4017,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ip",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3526,
                    "src": "7369:24:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 4012,
                  "id": 4018,
                  "nodeType": "Return",
                  "src": "7362:31:9"
                }
              ]
            },
            "documentation": "Get new key server address.",
            "id": 4020,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4008,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4005,
                    "src": "7324:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4009,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4007,
                  "name": "isOnNewSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3655,
                  "src": "7313:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7313:21:9"
              }
            ],
            "name": "getNewKeyServerAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4005,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4020,
                  "src": "7280:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4004,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7280:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7279:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4012,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4011,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4020,
                  "src": "7344:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4010,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7344:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7343:8:9"
            },
            "scope": 4653,
            "src": "7248:152:9",
            "stateMutability": "view",
            "superFunction": 548,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4030,
              "nodeType": "Block",
              "src": "7522:35:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4028,
                    "name": "migrationId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3549,
                    "src": "7539:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 4027,
                  "id": 4029,
                  "nodeType": "Return",
                  "src": "7532:18:9"
                }
              ]
            },
            "documentation": "Get migration id.",
            "id": 4031,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4023,
                    "name": "migrationId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3549,
                    "src": "7491:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 4024,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4022,
                  "name": "isValidMigrationId",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3719,
                  "src": "7472:18:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7472:31:9"
              }
            ],
            "name": "getMigrationId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4021,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7455:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4026,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4031,
                  "src": "7513:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7513:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7512:9:9"
            },
            "scope": 4653,
            "src": "7432:125:9",
            "stateMutability": "view",
            "superFunction": 553,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4071,
              "nodeType": "Block",
              "src": "7727:276:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4050,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4046,
                              "name": "newSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3545,
                              "src": "7794:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            "id": 4047,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "7794:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4048,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7794:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7816:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7794:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e20746f20656d7074792073657420697320696d706f737369626c652e",
                        "id": 4051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7819:39:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1c224b9347bf937358c282588588ec648bb92cb62051df8d27f1f60c0ff6c378",
                          "typeString": "literal_string \"Migration to empty set is impossible.\""
                        },
                        "value": "Migration to empty set is impossible."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1c224b9347bf937358c282588588ec648bb92cb62051df8d27f1f60c0ff6c378",
                          "typeString": "literal_string \"Migration to empty set is impossible.\""
                        }
                      ],
                      "id": 4045,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "7785:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7785:74:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4053,
                  "nodeType": "ExpressionStatement",
                  "src": "7785:74:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4054,
                      "name": "migrationMaster",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3547,
                      "src": "7870:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4055,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4838,
                        "src": "7888:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4056,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7888:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7870:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4058,
                  "nodeType": "ExpressionStatement",
                  "src": "7870:28:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4059,
                      "name": "migrationId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3549,
                      "src": "7908:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4060,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4033,
                      "src": "7922:2:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7908:16:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 4062,
                  "nodeType": "ExpressionStatement",
                  "src": "7908:16:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4064,
                        "name": "migrationSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "7942:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4065,
                        "name": "newSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3545,
                        "src": "7956:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      ],
                      "id": 4063,
                      "name": "copySet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4381,
                      "src": "7934:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_struct$_Set_$3535_storage_ptr_$returns$__$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,struct OwnedKeyServerSetWithMigration.Set storage pointer)"
                      }
                    },
                    "id": 4066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7934:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4067,
                  "nodeType": "ExpressionStatement",
                  "src": "7934:29:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 4068,
                      "name": "MigrationStarted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 462,
                      "src": "7978:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 4069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7978:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4070,
                  "nodeType": "EmitStatement",
                  "src": "7973:23:9"
                }
              ]
            },
            "documentation": "Start migration.",
            "id": 4072,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4036,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4035,
                  "name": "noActiveMigration",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3691,
                  "src": "7633:17:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7633:17:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4038,
                    "name": "id",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4033,
                    "src": "7670:2:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 4039,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4037,
                  "name": "isValidMigrationId",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3719,
                  "src": "7651:18:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7651:22:9"
              },
              {
                "arguments": null,
                "id": 4041,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4040,
                  "name": "whenMigrationRequired",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3732,
                  "src": "7674:21:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7674:21:9"
              },
              {
                "arguments": null,
                "id": 4043,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4042,
                  "name": "isPossibleMigrationParticipant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3769,
                  "src": "7696:30:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7696:30:9"
              }
            ],
            "name": "startMigration",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4034,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4033,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 4072,
                  "src": "7612:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4032,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7612:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7611:12:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4044,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7727:0:9"
            },
            "scope": 4653,
            "src": "7588:415:9",
            "stateMutability": "nonpayable",
            "superFunction": 570,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4169,
              "nodeType": "Block",
              "src": "8157:960:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "8175:35:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4088,
                            "name": "migrationConfirmations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3553,
                            "src": "8176:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 4091,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4089,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4838,
                              "src": "8199:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4090,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8199:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8176:34:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6967726174696f6e20697320616c726561647920636f6e6669726d65642e",
                        "id": 4093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8212:33:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a7bf344b752df72dae6a82473226bcc0666b750ddca14300a83fb403255f0bea",
                          "typeString": "literal_string \"Migration is already confirmed.\""
                        },
                        "value": "Migration is already confirmed."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a7bf344b752df72dae6a82473226bcc0666b750ddca14300a83fb403255f0bea",
                          "typeString": "literal_string \"Migration is already confirmed.\""
                        }
                      ],
                      "id": 4087,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "8167:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8167:79:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4095,
                  "nodeType": "ExpressionStatement",
                  "src": "8167:79:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4096,
                        "name": "migrationConfirmations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3553,
                        "src": "8256:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 4099,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4097,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4838,
                          "src": "8279:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4098,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8279:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8256:34:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4100,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8293:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "8256:41:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4102,
                  "nodeType": "ExpressionStatement",
                  "src": "8256:41:9"
                },
                {
                  "body": {
                    "id": 4125,
                    "nodeType": "Block",
                    "src": "8403:114:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 4121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "8421:45:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4115,
                              "name": "migrationConfirmations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3553,
                              "src": "8422:22:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 4120,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4116,
                                  "name": "migrationSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3543,
                                  "src": "8445:12:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                  }
                                },
                                "id": 4117,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "8445:17:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4119,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4118,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4104,
                                "src": "8463:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8445:20:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8422:44:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4124,
                        "nodeType": "IfStatement",
                        "src": "8417:90:9",
                        "trueBody": {
                          "id": 4123,
                          "nodeType": "Block",
                          "src": "8468:39:9",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 4086,
                              "id": 4122,
                              "nodeType": "Return",
                              "src": "8486:7:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4107,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4104,
                      "src": "8368:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4108,
                          "name": "migrationSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3543,
                          "src": "8372:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 4109,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "8372:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4110,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8372:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8368:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4126,
                  "initializationExpression": {
                    "assignments": [
                      4104
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4104,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 4170,
                        "src": "8356:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4103,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8356:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4106,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4105,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8365:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8356:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "8398:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4112,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4104,
                        "src": "8400:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4114,
                    "nodeType": "ExpressionStatement",
                    "src": "8398:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "8351:166:9"
                },
                {
                  "body": {
                    "id": 4147,
                    "nodeType": "Block",
                    "src": "8637:76:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8651:51:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4139,
                              "name": "migrationConfirmations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3553,
                              "src": "8658:22:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 4144,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4140,
                                  "name": "migrationSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3543,
                                  "src": "8681:12:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                                  }
                                },
                                "id": 4141,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "8681:17:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4143,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4142,
                                "name": "m",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4128,
                                "src": "8699:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8681:20:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8658:44:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4146,
                        "nodeType": "ExpressionStatement",
                        "src": "8651:51:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4131,
                      "name": "m",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4128,
                      "src": "8602:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4132,
                          "name": "migrationSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3543,
                          "src": "8606:12:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                          }
                        },
                        "id": 4133,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "8606:17:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4134,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8606:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8602:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4148,
                  "initializationExpression": {
                    "assignments": [
                      4128
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4128,
                        "name": "m",
                        "nodeType": "VariableDeclaration",
                        "scope": 4170,
                        "src": "8590:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4127,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8590:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4130,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8599:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8590:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "8632:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4136,
                        "name": "m",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4128,
                        "src": "8634:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4138,
                    "nodeType": "ExpressionStatement",
                    "src": "8632:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "8585:128:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8722:22:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4149,
                      "name": "migrationMaster",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3547,
                      "src": "8729:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4151,
                  "nodeType": "ExpressionStatement",
                  "src": "8722:22:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4153,
                        "name": "currentSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3541,
                        "src": "8815:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4154,
                        "name": "migrationSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "8827:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      ],
                      "id": 4152,
                      "name": "copySet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4381,
                      "src": "8807:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_struct$_Set_$3535_storage_ptr_$returns$__$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,struct OwnedKeyServerSetWithMigration.Set storage pointer)"
                      }
                    },
                    "id": 4155,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8807:33:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4156,
                  "nodeType": "ExpressionStatement",
                  "src": "8807:33:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4158,
                        "name": "migrationSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3543,
                        "src": "8917:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      ],
                      "id": 4157,
                      "name": "clearSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4433,
                      "src": "8908:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$returns$__$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer)"
                      }
                    },
                    "id": 4159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8908:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4160,
                  "nodeType": "ExpressionStatement",
                  "src": "8908:22:9"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 4161,
                      "name": "MigrationCompleted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 464,
                      "src": "8986:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 4162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8986:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4163,
                  "nodeType": "EmitStatement",
                  "src": "8981:25:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4164,
                      "name": "currentSetChangeBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3539,
                      "src": "9074:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4165,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4828,
                        "src": "9098:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 4166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "9098:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9074:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4168,
                  "nodeType": "ExpressionStatement",
                  "src": "9074:36:9"
                }
              ]
            },
            "documentation": "Confirm migration.",
            "id": 4170,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4077,
                    "name": "id",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4074,
                    "src": "8102:2:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 4078,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4076,
                  "name": "isValidMigrationId",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3719,
                  "src": "8083:18:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8083:22:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4080,
                    "name": "id",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4074,
                    "src": "8124:2:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 4081,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4079,
                  "name": "isActiveMigration",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3704,
                  "src": "8106:17:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8106:21:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 4083,
                      "name": "msg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4838,
                      "src": "8145:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_message",
                        "typeString": "msg"
                      }
                    },
                    "id": 4084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "sender",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "8145:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4085,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4082,
                  "name": "isOnMigrationSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3632,
                  "src": "8128:16:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8128:28:9"
              }
            ],
            "name": "confirmMigration",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4074,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 4170,
                  "src": "8062:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4073,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8062:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8061:12:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4086,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8157:0:9"
            },
            "scope": 4653,
            "src": "8036:1081:9",
            "stateMutability": "nonpayable",
            "superFunction": 575,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4177,
              "nodeType": "Block",
              "src": "9215:39:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4175,
                    "name": "migrationMaster",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3547,
                    "src": "9232:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4174,
                  "id": 4176,
                  "nodeType": "Return",
                  "src": "9225:22:9"
                }
              ]
            },
            "documentation": "Get migration master.",
            "id": 4178,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getMigrationMaster",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4171,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9180:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4173,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4178,
                  "src": "9206:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4172,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9206:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9205:9:9"
            },
            "scope": 4653,
            "src": "9153:101:9",
            "stateMutability": "view",
            "superFunction": 558,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4192,
              "nodeType": "Block",
              "src": "9404:57:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4188,
                      "name": "migrationConfirmations",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3553,
                      "src": "9421:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 4190,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4189,
                      "name": "keyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4180,
                      "src": "9444:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9421:33:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4187,
                  "id": 4191,
                  "nodeType": "Return",
                  "src": "9414:40:9"
                }
              ]
            },
            "documentation": "Is migration confirmed.",
            "id": 4193,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4183,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4180,
                    "src": "9378:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4184,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4182,
                  "name": "isMigrationParticipant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3806,
                  "src": "9355:22:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9355:33:9"
              }
            ],
            "name": "isMigrationConfirmed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4180,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4193,
                  "src": "9322:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4179,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9322:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9321:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4186,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4193,
                  "src": "9398:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4185,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9398:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9397:6:9"
            },
            "scope": 4653,
            "src": "9292:169:9",
            "stateMutability": "view",
            "superFunction": 565,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4208,
              "nodeType": "Block",
              "src": "9668:90:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9686:14:9",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 4199,
                          "name": "isInitialized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3537,
                          "src": "9687:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f7420696e697469616c697a656421",
                        "id": 4201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9702:18:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4300141d164db2d9e19acd7c084fa4711f1ef12b803989fc3676b5566e11020a",
                          "typeString": "literal_string \"Not initialized!\""
                        },
                        "value": "Not initialized!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4300141d164db2d9e19acd7c084fa4711f1ef12b803989fc3676b5566e11020a",
                          "typeString": "literal_string \"Not initialized!\""
                        }
                      ],
                      "id": 4198,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "9678:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9678:43:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4203,
                  "nodeType": "ExpressionStatement",
                  "src": "9678:43:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4204,
                      "name": "isInitialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3537,
                      "src": "9731:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4205,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9747:4:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "9731:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4207,
                  "nodeType": "ExpressionStatement",
                  "src": "9731:20:9"
                }
              ]
            },
            "documentation": "Complete initialization. Before this function is called, all calls to addKeyServer/removeKeyServer\n affect both newSet and currentSet.",
            "id": 4209,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4196,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4195,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "9658:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9658:9:9"
              }
            ],
            "name": "completeInitialization",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4194,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9648:2:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4197,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9668:0:9"
            },
            "scope": 4653,
            "src": "9617:141:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4251,
              "nodeType": "Block",
              "src": "10033:326:9",
              "statements": [
                {
                  "assignments": [
                    4230
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4230,
                      "name": "keyServer",
                      "nodeType": "VariableDeclaration",
                      "scope": 4252,
                      "src": "10076:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4229,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10076:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4236,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4232,
                        "name": "newSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3545,
                        "src": "10108:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4233,
                        "name": "keyServerPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4211,
                        "src": "10116:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4234,
                        "name": "keyServerIp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4213,
                        "src": "10133:11:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 4231,
                      "name": "appendToSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4581,
                      "src": "10096:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,bytes memory,string memory) returns (address)"
                      }
                    },
                    "id": 4235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10096:49:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10076:69:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 4238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10197:14:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4237,
                      "name": "isInitialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3537,
                      "src": "10198:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4246,
                  "nodeType": "IfStatement",
                  "src": "10193:98:9",
                  "trueBody": {
                    "id": 4245,
                    "nodeType": "Block",
                    "src": "10213:78:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4240,
                              "name": "currentSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3541,
                              "src": "10239:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4241,
                              "name": "keyServerPublic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4211,
                              "src": "10251:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4242,
                              "name": "keyServerIp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4213,
                              "src": "10268:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4239,
                            "name": "appendToSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4581,
                            "src": "10227:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,bytes memory,string memory) returns (address)"
                            }
                          },
                          "id": 4243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10227:53:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4244,
                        "nodeType": "ExpressionStatement",
                        "src": "10227:53:9"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4248,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4230,
                        "src": "10342:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 4247,
                      "name": "KeyServerAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 456,
                      "src": "10327:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 4249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10327:25:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4250,
                  "nodeType": "EmitStatement",
                  "src": "10322:30:9"
                }
              ]
            },
            "documentation": "Add new key server to set.",
            "id": 4252,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4216,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4215,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "9887:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9887:9:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4218,
                    "name": "keyServerIp",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4213,
                    "src": "9922:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 4219,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4217,
                  "name": "notAnEmptyString",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3573,
                  "src": "9905:16:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_string_memory_ptr_$",
                    "typeString": "modifier (string memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9905:29:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4221,
                    "name": "keyServerPublic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4211,
                    "src": "9957:15:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  }
                ],
                "id": 4222,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4220,
                  "name": "isValidPublic",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3586,
                  "src": "9943:13:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes_memory_ptr_$",
                    "typeString": "modifier (bytes memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9943:30:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4225,
                        "name": "keyServerPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4211,
                        "src": "10011:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 4224,
                      "name": "computeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4299,
                      "src": "9996:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory) pure returns (address)"
                      }
                    },
                    "id": 4226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9996:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4227,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4223,
                  "name": "isNotOnNewSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3678,
                  "src": "9982:13:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9982:46:9"
              }
            ],
            "name": "addKeyServer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4211,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 4252,
                  "src": "9821:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4210,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9821:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4213,
                  "name": "keyServerIp",
                  "nodeType": "VariableDeclaration",
                  "scope": 4252,
                  "src": "9844:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4212,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9844:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9820:43:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4228,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10033:0:9"
            },
            "scope": 4653,
            "src": "9799:560:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4280,
              "nodeType": "Block",
              "src": "10484:290:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4263,
                        "name": "newSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3545,
                        "src": "10551:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4264,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4254,
                        "src": "10559:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$3535_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 4262,
                      "name": "removeFromSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4652,
                      "src": "10537:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_address_$returns$__$",
                        "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,address)"
                      }
                    },
                    "id": 4265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10537:32:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4266,
                  "nodeType": "ExpressionStatement",
                  "src": "10537:32:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 4268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10627:14:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4267,
                      "name": "isInitialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3537,
                      "src": "10628:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4275,
                  "nodeType": "IfStatement",
                  "src": "10623:81:9",
                  "trueBody": {
                    "id": 4274,
                    "nodeType": "Block",
                    "src": "10643:61:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4270,
                              "name": "currentSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3541,
                              "src": "10671:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4271,
                              "name": "keyServer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4254,
                              "src": "10683:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Set_$3535_storage",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage ref"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4269,
                            "name": "removeFromSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4652,
                            "src": "10657:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3535_storage_ptr_$_t_address_$returns$__$",
                              "typeString": "function (struct OwnedKeyServerSetWithMigration.Set storage pointer,address)"
                            }
                          },
                          "id": 4272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10657:36:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4273,
                        "nodeType": "ExpressionStatement",
                        "src": "10657:36:9"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4277,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4254,
                        "src": "10757:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 4276,
                      "name": "KeyServerRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 460,
                      "src": "10740:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 4278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10740:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4279,
                  "nodeType": "EmitStatement",
                  "src": "10735:32:9"
                }
              ]
            },
            "documentation": "Remove key server from set.",
            "id": 4281,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4257,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4256,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4757,
                  "src": "10452:9:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10452:9:9"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 4259,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4254,
                    "src": "10473:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 4260,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4258,
                  "name": "isOnNewSet",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3655,
                  "src": "10462:10:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10462:21:9"
              }
            ],
            "name": "removeKeyServer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4254,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4281,
                  "src": "10426:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4253,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10426:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10425:19:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4261,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10484:0:9"
            },
            "scope": 4653,
            "src": "10401:373:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4298,
              "nodeType": "Block",
              "src": "10899:112:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4291,
                                  "name": "keyServerPublic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4283,
                                  "src": "10939:15:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 4290,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4832,
                                "src": "10929:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                  "typeString": "function () pure returns (bytes32)"
                                }
                              },
                              "id": 4292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10929:26:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10924:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 4293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10924:32:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078303046464646464646464646464646464646464646464646464646464646464646464646464646464646",
                          "id": 4294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10959:44:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542975_by_1",
                            "typeString": "int_const 1461...(41 digits omitted)...2975"
                          },
                          "value": "0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                        },
                        "src": "10924:79:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4288,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "10916:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 4296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10916:88:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4287,
                  "id": 4297,
                  "nodeType": "Return",
                  "src": "10909:95:9"
                }
              ]
            },
            "documentation": "Compute address from public key.",
            "id": 4299,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "computeAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4284,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4283,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 4299,
                  "src": "10845:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4282,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10845:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10844:23:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4287,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4286,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4299,
                  "src": "10890:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4285,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10890:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10889:9:9"
            },
            "scope": 4653,
            "src": "10821:190:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4311,
              "nodeType": "Block",
              "src": "11117:52:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4306,
                        "name": "keyServerPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4301,
                        "src": "11134:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 4307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11134:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3634",
                      "id": 4308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11160:2:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_64_by_1",
                        "typeString": "int_const 64"
                      },
                      "value": "64"
                    },
                    "src": "11134:28:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4305,
                  "id": 4310,
                  "nodeType": "Return",
                  "src": "11127:35:9"
                }
              ]
            },
            "documentation": "'Check' public key.",
            "id": 4312,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "checkPublic",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4301,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 4312,
                  "src": "11066:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4300,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11066:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11065:23:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4304,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4312,
                  "src": "11111:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4303,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11111:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11110:6:9"
            },
            "scope": 4653,
            "src": "11045:124:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4380,
              "nodeType": "Block",
              "src": "11276:271:9",
              "statements": [
                {
                  "body": {
                    "id": 4340,
                    "nodeType": "Block",
                    "src": "11330:54:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "11344:29:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4331,
                                "name": "set1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4314,
                                "src": "11351:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4332,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "map",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3534,
                              "src": "11351:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                              }
                            },
                            "id": 4337,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4333,
                                  "name": "set1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4314,
                                  "src": "11360:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4334,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11360:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4336,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4335,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4320,
                                "src": "11370:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11360:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11351:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4339,
                        "nodeType": "ExpressionStatement",
                        "src": "11344:29:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4323,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4320,
                      "src": "11303:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4324,
                          "name": "set1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4314,
                          "src": "11307:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4325,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "11307:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4326,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11307:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11303:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4341,
                  "initializationExpression": {
                    "assignments": [
                      4320
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4320,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4381,
                        "src": "11291:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4319,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11291:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4322,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11300:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11291:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "11325:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4328,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4320,
                        "src": "11327:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4330,
                    "nodeType": "ExpressionStatement",
                    "src": "11325:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "11286:98:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4342,
                        "name": "set1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4314,
                        "src": "11394:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                        }
                      },
                      "id": 4344,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3530,
                      "src": "11394:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4345,
                        "name": "set2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4316,
                        "src": "11406:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                        }
                      },
                      "id": 4346,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3530,
                      "src": "11406:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "src": "11394:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "id": 4348,
                  "nodeType": "ExpressionStatement",
                  "src": "11394:21:9"
                },
                {
                  "body": {
                    "id": 4378,
                    "nodeType": "Block",
                    "src": "11469:72:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4361,
                                "name": "set1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4314,
                                "src": "11483:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4367,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "map",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3534,
                              "src": "11483:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                              }
                            },
                            "id": 4368,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4363,
                                  "name": "set1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4314,
                                  "src": "11492:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4364,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11492:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4366,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4365,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4350,
                                "src": "11502:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11492:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11483:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4369,
                                "name": "set2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4316,
                                "src": "11508:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4370,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "map",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3534,
                              "src": "11508:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                              }
                            },
                            "id": 4375,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4371,
                                  "name": "set1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4314,
                                  "src": "11517:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4372,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11517:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4374,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4373,
                                "name": "j",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4350,
                                "src": "11527:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11517:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11508:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                            }
                          },
                          "src": "11483:47:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                          }
                        },
                        "id": 4377,
                        "nodeType": "ExpressionStatement",
                        "src": "11483:47:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4353,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4350,
                      "src": "11442:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4354,
                          "name": "set1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4314,
                          "src": "11446:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4355,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "11446:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4356,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11446:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11442:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4379,
                  "initializationExpression": {
                    "assignments": [
                      4350
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4350,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 4381,
                        "src": "11430:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4349,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11430:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4352,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4351,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11439:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11430:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4359,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "11464:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4358,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4350,
                        "src": "11466:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4360,
                    "nodeType": "ExpressionStatement",
                    "src": "11464:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "11425:116:9"
                }
              ]
            },
            "documentation": "Copy set (assignment operator).",
            "id": 4381,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "copySet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4314,
                  "name": "set1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "11232:16:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4313,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11232:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4316,
                  "name": "set2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4381,
                  "src": "11250:16:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4315,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11250:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11231:36:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4318,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11276:0:9"
            },
            "scope": 4653,
            "src": "11215:332:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4432,
              "nodeType": "Block",
              "src": "11615:258:9",
              "statements": [
                {
                  "body": {
                    "id": 4430,
                    "nodeType": "Block",
                    "src": "11653:214:9",
                    "statements": [
                      {
                        "assignments": [
                          4392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4392,
                            "name": "keyServer",
                            "nodeType": "VariableDeclaration",
                            "scope": 4433,
                            "src": "11667:17:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4391,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11667:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4401,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4393,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4383,
                              "src": "11687:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4394,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "11687:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4400,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4395,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4383,
                                  "src": "11696:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4396,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11696:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4397,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11696:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11714:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "11696:19:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11687:29:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11667:49:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "11730:36:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4402,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4383,
                                "src": "11737:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4403,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "list",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3530,
                              "src": "11737:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4409,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4404,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4383,
                                    "src": "11746:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                      "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                    }
                                  },
                                  "id": 4405,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "list",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3530,
                                  "src": "11746:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 4406,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11746:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11764:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "11746:19:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11737:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4411,
                        "nodeType": "ExpressionStatement",
                        "src": "11730:36:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4412,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4383,
                                "src": "11780:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4415,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "list",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3530,
                              "src": "11780:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4416,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11780:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4417,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4383,
                                  "src": "11798:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                    "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                  }
                                },
                                "id": 4418,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "list",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3530,
                                "src": "11798:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4419,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11798:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11816:1:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "11798:19:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11780:37:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4423,
                        "nodeType": "ExpressionStatement",
                        "src": "11780:37:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "11831:25:9",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4424,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4383,
                                "src": "11838:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                  "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                }
                              },
                              "id": 4425,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "map",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3534,
                              "src": "11838:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                              }
                            },
                            "id": 4427,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4426,
                              "name": "keyServer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4392,
                              "src": "11846:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11838:18:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                              "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4429,
                        "nodeType": "ExpressionStatement",
                        "src": "11831:25:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4386,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4383,
                          "src": "11632:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4387,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "11632:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4388,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11632:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4389,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11650:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11632:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4431,
                  "nodeType": "WhileStatement",
                  "src": "11625:242:9"
                }
              ]
            },
            "documentation": "Clear set.",
            "id": 4433,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "clearSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4383,
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "scope": 4433,
                  "src": "11590:15:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4382,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11590:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11589:17:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4385,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11615:0:9"
            },
            "scope": 4653,
            "src": "11572:301:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4512,
              "nodeType": "Block",
              "src": "11993:404:9",
              "statements": [
                {
                  "body": {
                    "id": 4474,
                    "nodeType": "Block",
                    "src": "12047:135:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4456,
                                          "name": "set2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4437,
                                          "src": "12081:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                          }
                                        },
                                        "id": 4457,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "12081:8:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 4462,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4458,
                                            "name": "set1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4435,
                                            "src": "12090:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                            }
                                          },
                                          "id": 4459,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "list",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3530,
                                          "src": "12090:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 4461,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 4460,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4443,
                                          "src": "12100:1:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "12090:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12081:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 4463,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "12081:25:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 4455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12075:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 4464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12075:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 4454,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "12065:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 4465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12065:43:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 4467,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12122:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 4466,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "12112:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 4468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12112:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12065:60:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4473,
                        "nodeType": "IfStatement",
                        "src": "12061:111:9",
                        "trueBody": {
                          "id": 4472,
                          "nodeType": "Block",
                          "src": "12127:45:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 4470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12152:5:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 4441,
                              "id": 4471,
                              "nodeType": "Return",
                              "src": "12145:12:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4446,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4443,
                      "src": "12020:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4447,
                          "name": "set1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4435,
                          "src": "12024:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4448,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "12024:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4449,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12024:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12020:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4475,
                  "initializationExpression": {
                    "assignments": [
                      4443
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4443,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4513,
                        "src": "12008:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4442,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12008:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4445,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4444,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12017:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12008:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4452,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "12042:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4451,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4443,
                        "src": "12044:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4453,
                    "nodeType": "ExpressionStatement",
                    "src": "12042:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "12003:179:9"
                },
                {
                  "body": {
                    "id": 4508,
                    "nodeType": "Block",
                    "src": "12235:135:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4490,
                                          "name": "set1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4435,
                                          "src": "12269:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                          }
                                        },
                                        "id": 4491,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "map",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3534,
                                        "src": "12269:8:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                                        }
                                      },
                                      "id": 4496,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4492,
                                            "name": "set2",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4437,
                                            "src": "12278:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                                            }
                                          },
                                          "id": 4493,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "list",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3530,
                                          "src": "12278:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 4495,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 4494,
                                          "name": "j",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4477,
                                          "src": "12288:1:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "12278:12:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12269:22:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                                      }
                                    },
                                    "id": 4497,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ip",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3526,
                                    "src": "12269:25:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 4489,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12263:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": "bytes"
                                },
                                "id": 4498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12263:32:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "id": 4488,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "12253:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 4499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12253:43:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "",
                                "id": 4501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12310:2:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 4500,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4832,
                              "src": "12300:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32)"
                              }
                            },
                            "id": 4502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12300:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12253:60:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4507,
                        "nodeType": "IfStatement",
                        "src": "12249:111:9",
                        "trueBody": {
                          "id": 4506,
                          "nodeType": "Block",
                          "src": "12315:45:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 4504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12340:5:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 4441,
                              "id": 4505,
                              "nodeType": "Return",
                              "src": "12333:12:9"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4480,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "12208:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4481,
                          "name": "set2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4437,
                          "src": "12212:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4482,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "12212:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4483,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12212:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12208:20:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4509,
                  "initializationExpression": {
                    "assignments": [
                      4477
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4477,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 4513,
                        "src": "12196:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4476,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12196:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4479,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12205:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12196:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4486,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "12230:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4485,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4477,
                        "src": "12232:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4487,
                    "nodeType": "ExpressionStatement",
                    "src": "12230:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "12191:179:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 4510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12386:4:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 4441,
                  "id": 4511,
                  "nodeType": "Return",
                  "src": "12379:11:9"
                }
              ]
            },
            "documentation": "Are two sets equal?",
            "id": 4513,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "areEqualSets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4435,
                  "name": "set1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4513,
                  "src": "11929:16:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4434,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11929:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4437,
                  "name": "set2",
                  "nodeType": "VariableDeclaration",
                  "scope": 4513,
                  "src": "11947:16:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4436,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "11947:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11928:36:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4440,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4513,
                  "src": "11987:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4439,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11987:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11986:6:9"
            },
            "scope": 4653,
            "src": "11907:490:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4580,
              "nodeType": "Block",
              "src": "12547:435:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4525,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4515,
                              "src": "12624:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4526,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "12624:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4527,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12624:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "323536",
                          "id": 4528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12642:3:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "256"
                        },
                        "src": "12624:21:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e756d626572206f662073657276657273206d75737420626520736d616c6c6572207468616e203235362e",
                        "id": 4530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12647:45:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_84b480813803334fcb37184ba92cb5adf68f2818b628343d144f8ce3bb7827b2",
                          "typeString": "literal_string \"Number of servers must be smaller than 256.\""
                        },
                        "value": "Number of servers must be smaller than 256."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_84b480813803334fcb37184ba92cb5adf68f2818b628343d144f8ce3bb7827b2",
                          "typeString": "literal_string \"Number of servers must be smaller than 256.\""
                        }
                      ],
                      "id": 4524,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4841,
                        4842
                      ],
                      "referencedDeclaration": 4842,
                      "src": "12616:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12616:77:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4532,
                  "nodeType": "ExpressionStatement",
                  "src": "12616:77:9"
                },
                {
                  "assignments": [
                    4534
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4534,
                      "name": "keyServer",
                      "nodeType": "VariableDeclaration",
                      "scope": 4581,
                      "src": "12704:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4533,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12704:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4538,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4536,
                        "name": "keyServerPublic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4517,
                        "src": "12739:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 4535,
                      "name": "computeAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4299,
                      "src": "12724:14:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory) pure returns (address)"
                      }
                    },
                    "id": 4537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12724:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12704:51:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4539,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4515,
                            "src": "12765:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                            }
                          },
                          "id": 4542,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "map",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3534,
                          "src": "12765:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                            "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                          }
                        },
                        "id": 4543,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4541,
                          "name": "keyServer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4534,
                          "src": "12773:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12765:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                        }
                      },
                      "id": 4544,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "index",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3522,
                      "src": "12765:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4546,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4515,
                              "src": "12798:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4547,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "12798:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4548,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12798:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12792:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 4549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12792:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "12765:49:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 4551,
                  "nodeType": "ExpressionStatement",
                  "src": "12765:49:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4552,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4515,
                            "src": "12824:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                            }
                          },
                          "id": 4555,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "map",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3534,
                          "src": "12824:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                            "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                          }
                        },
                        "id": 4556,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4554,
                          "name": "keyServer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4534,
                          "src": "12832:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12824:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                        }
                      },
                      "id": 4557,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "publicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3524,
                      "src": "12824:28:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4558,
                      "name": "keyServerPublic",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4517,
                      "src": "12855:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "12824:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 4560,
                  "nodeType": "ExpressionStatement",
                  "src": "12824:46:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4561,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4515,
                            "src": "12880:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                            }
                          },
                          "id": 4564,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "map",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3534,
                          "src": "12880:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                            "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                          }
                        },
                        "id": 4565,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4563,
                          "name": "keyServer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4534,
                          "src": "12888:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12880:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                        }
                      },
                      "id": 4566,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ip",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3526,
                      "src": "12880:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4567,
                      "name": "keyServerIp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4519,
                      "src": "12904:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "12880:35:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 4569,
                  "nodeType": "ExpressionStatement",
                  "src": "12880:35:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4575,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4534,
                        "src": "12939:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4570,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4515,
                          "src": "12925:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4573,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "12925:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4574,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "12925:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 4576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12925:24:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4577,
                  "nodeType": "ExpressionStatement",
                  "src": "12925:24:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4578,
                    "name": "keyServer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4534,
                    "src": "12966:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4523,
                  "id": 4579,
                  "nodeType": "Return",
                  "src": "12959:16:9"
                }
              ]
            },
            "documentation": "Append new key serer to set.",
            "id": 4581,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "appendToSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4515,
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "scope": 4581,
                  "src": "12461:15:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4514,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "12461:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4517,
                  "name": "keyServerPublic",
                  "nodeType": "VariableDeclaration",
                  "scope": 4581,
                  "src": "12478:21:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4516,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12478:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4519,
                  "name": "keyServerIp",
                  "nodeType": "VariableDeclaration",
                  "scope": 4581,
                  "src": "12501:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4518,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12501:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12460:60:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4522,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4581,
                  "src": "12538:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4521,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12538:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12537:9:9"
            },
            "scope": 4653,
            "src": "12440:542:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 4651,
              "nodeType": "Block",
              "src": "13095:475:9",
              "statements": [
                {
                  "assignments": [
                    4589
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4589,
                      "name": "removedIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 4652,
                      "src": "13161:18:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4588,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "13161:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4597,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4591,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4583,
                              "src": "13188:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4592,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "map",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3534,
                            "src": "13188:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                              "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                            }
                          },
                          "id": 4594,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4593,
                            "name": "keyServer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4585,
                            "src": "13196:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13188:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                            "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                          }
                        },
                        "id": 4595,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3522,
                        "src": "13188:24:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 4590,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13182:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": "uint8"
                    },
                    "id": 4596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13182:31:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13161:52:9"
                },
                {
                  "assignments": [
                    4599
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4599,
                      "name": "lastIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 4652,
                      "src": "13223:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4598,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "13223:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4607,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 4606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4601,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4583,
                              "src": "13247:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                                "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                              }
                            },
                            "id": 4602,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "list",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3530,
                            "src": "13247:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 4603,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13247:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 4600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13241:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 4604,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13241:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13266:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "13241:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13223:44:9"
                },
                {
                  "assignments": [
                    4609
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4609,
                      "name": "lastKeyServer",
                      "nodeType": "VariableDeclaration",
                      "scope": 4652,
                      "src": "13277:21:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4608,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13277:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4614,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4610,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4583,
                        "src": "13301:3:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                          "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                        }
                      },
                      "id": 4611,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "list",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3530,
                      "src": "13301:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 4613,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4612,
                      "name": "lastIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4599,
                      "src": "13310:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13301:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13277:43:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4615,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4583,
                          "src": "13330:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4618,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "13330:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4619,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4617,
                        "name": "removedIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4589,
                        "src": "13339:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13330:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4620,
                      "name": "lastKeyServer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4609,
                      "src": "13355:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "13330:38:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4622,
                  "nodeType": "ExpressionStatement",
                  "src": "13330:38:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4623,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4583,
                            "src": "13378:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                              "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                            }
                          },
                          "id": 4626,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "map",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3534,
                          "src": "13378:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                            "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                          }
                        },
                        "id": 4627,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4625,
                          "name": "lastKeyServer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4609,
                          "src": "13386:13:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13378:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                          "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                        }
                      },
                      "id": 4628,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "index",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3522,
                      "src": "13378:28:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4629,
                      "name": "removedIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4589,
                      "src": "13409:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "13378:43:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 4631,
                  "nodeType": "ExpressionStatement",
                  "src": "13378:43:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "13475:26:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4632,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4583,
                          "src": "13482:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4633,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "13482:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4635,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4634,
                        "name": "lastIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4599,
                        "src": "13491:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13482:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4637,
                  "nodeType": "ExpressionStatement",
                  "src": "13475:26:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "13511:25:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4638,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4583,
                          "src": "13518:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4639,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "map",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3534,
                        "src": "13518:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_KeyServer_$3527_storage_$",
                          "typeString": "mapping(address => struct OwnedKeyServerSetWithMigration.KeyServer storage ref)"
                        }
                      },
                      "id": 4641,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4640,
                        "name": "keyServer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4585,
                        "src": "13526:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13518:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_KeyServer_$3527_storage",
                        "typeString": "struct OwnedKeyServerSetWithMigration.KeyServer storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4643,
                  "nodeType": "ExpressionStatement",
                  "src": "13511:25:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4649,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "13546:17:9",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4644,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4583,
                          "src": "13546:3:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                            "typeString": "struct OwnedKeyServerSetWithMigration.Set storage pointer"
                          }
                        },
                        "id": 4647,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "list",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3530,
                        "src": "13546:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4648,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13546:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4650,
                  "nodeType": "ExpressionStatement",
                  "src": "13546:17:9"
                }
              ]
            },
            "documentation": "Remove existing key server set.",
            "id": 4652,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeFromSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4583,
                  "name": "set",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "13051:15:9",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                    "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4582,
                    "name": "Set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3535,
                    "src": "13051:3:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$3535_storage_ptr",
                      "typeString": "struct OwnedKeyServerSetWithMigration.Set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4585,
                  "name": "keyServer",
                  "nodeType": "VariableDeclaration",
                  "scope": 4652,
                  "src": "13068:17:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4584,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13068:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13050:36:9"
            },
            "payable": false,
            "returnParameters": {
              "id": 4587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13095:0:9"
            },
            "scope": 4653,
            "src": "13028:542:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 4654,
        "src": "896:12676:9"
      }
    ],
    "src": "709:12863:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2019-01-23T09:53:59.566Z"
}