{
  "contractName": "ValidatorRegistry",
  "abi": [
    {
      "inputs": [
        {
          "name": "_treasuryAddress",
          "type": "address"
        },
        {
          "name": "_votingAddress",
          "type": "address"
        },
        {
          "name": "auth",
          "type": "address"
        },
        {
          "name": "_events",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor",
      "signature": "constructor"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "applicationPeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xd07e98b5"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "commitPeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xf713b052"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "challengePeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xf3f480d9"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "exitPeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x753d7445"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "rewardPeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xe88dc5b7"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "minimumBalance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xb9d1d49b"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "stakeholderCut",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x8ea17b2d"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "voting",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xfce1ccca"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "validators",
      "outputs": [
        {
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xca1e7819"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "treasury",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x61d027b3"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xfc0c546a"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "pubKey",
          "type": "bytes32"
        }
      ],
      "name": "getListing",
      "outputs": [
        {
          "name": "status",
          "type": "uint8"
        },
        {
          "name": "applicationBlock",
          "type": "uint256"
        },
        {
          "name": "tendermintPublicKey",
          "type": "bytes32"
        },
        {
          "name": "owner",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x175c0d16"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "msgSender",
          "type": "address"
        },
        {
          "name": "tendermintPublicKey",
          "type": "bytes32"
        },
        {
          "name": "tokensToStake",
          "type": "uint256"
        },
        {
          "name": "rewardRate",
          "type": "int256"
        }
      ],
      "name": "registerListing",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x858e48fe"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "msgSender",
          "type": "address"
        },
        {
          "name": "tendermintPublicKey",
          "type": "bytes32"
        }
      ],
      "name": "challengeListing",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xa0b3030f"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "pubKey",
          "type": "bytes32"
        }
      ],
      "name": "resolveChallenge",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xd32c943a"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "msgSender",
          "type": "address"
        },
        {
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "claimWinnings",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x183085c0"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "pubKey",
          "type": "bytes32"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x7790ddc6"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "msgSender",
          "type": "address"
        },
        {
          "name": "tendermintPublicKey",
          "type": "bytes32"
        }
      ],
      "name": "confirmListing",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x77a2b56f"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "msgSender",
          "type": "address"
        },
        {
          "name": "tendermintPublicKey",
          "type": "bytes32"
        }
      ],
      "name": "initExit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x878432a6"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "msgSender",
          "type": "address"
        },
        {
          "name": "tendermintPublicKey",
          "type": "bytes32"
        }
      ],
      "name": "finalizeExit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xff8f3e62"
    }
  ],
  "bytecode": "0x608060405260086001556004600255600860035560026004556002600555670de0b6b3a7640000600655601e6007556001600d5534801561003f57600080fd5b5060405160808062002a5d8339810180604052608081101561006057600080fd5b50805160208083015160408085015160609095015160008054600160a060020a03808916600160a060020a0319928316179092556008805483891690831617908190556009805484881693169290921790915583517ffe2ada6b0000000000000000000000000000000000000000000000000000000081529351969794969495929491169263fe2ada6b926004808301939192829003018186803b15801561010757600080fd5b505afa15801561011b573d6000803e3d6000fd5b505050506040513d602081101561013157600080fd5b5051600a8054600160a060020a03928316600160a060020a031991821617909155600f80549390921692169190911790555050506128e880620001756000396000f3fe6080604052600436106101115763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663175c0d168114610116578063183085c01461018157806361d027b3146101bc578063753d7445146101ed5780637790ddc61461021457806377a2b56f1461023e578063858e48fe14610277578063878432a6146102bc5780638ea17b2d146102f5578063a0b3030f1461030a578063b9d1d49b14610343578063ca1e781914610358578063d07e98b5146103bd578063d32c943a146103d2578063e88dc5b7146103fc578063f3f480d914610411578063f713b05214610426578063fc0c546a1461043b578063fce1ccca14610450578063ff8f3e6214610465575b600080fd5b34801561012257600080fd5b506101406004803603602081101561013957600080fd5b503561049e565b6040518085600481111561015057fe5b60ff168152602081019490945250604080840192909252600160a060020a0316606083015251908190036080019150f35b34801561018d57600080fd5b506101ba600480360360408110156101a457600080fd5b50600160a060020a03813516906020013561058d565b005b3480156101c857600080fd5b506101d16108fa565b60408051600160a060020a039092168252519081900360200190f35b3480156101f957600080fd5b5061020261090a565b60408051918252519081900360200190f35b34801561022057600080fd5b506101ba6004803603602081101561023757600080fd5b5035610910565b34801561024a57600080fd5b506101ba6004803603604081101561026157600080fd5b50600160a060020a03813516906020013561092b565b34801561028357600080fd5b506101ba6004803603608081101561029a57600080fd5b50600160a060020a038135169060208101359060408101359060600135610a81565b3480156102c857600080fd5b506101ba600480360360408110156102df57600080fd5b50600160a060020a038135169060200135610c5d565b34801561030157600080fd5b50610202610ee3565b34801561031657600080fd5b506101ba6004803603604081101561032d57600080fd5b50600160a060020a038135169060200135610ee9565b34801561034f57600080fd5b506102026111b9565b34801561036457600080fd5b5061036d6111bf565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103a9578181015183820152602001610391565b505050509050019250505060405180910390f35b3480156103c957600080fd5b50610202611217565b3480156103de57600080fd5b506101ba600480360360208110156103f557600080fd5b503561121d565b34801561040857600080fd5b50610202611a17565b34801561041d57600080fd5b50610202611a1d565b34801561043257600080fd5b50610202611a23565b34801561044757600080fd5b506101d1611a29565b34801561045c57600080fd5b506101d1611a38565b34801561047157600080fd5b506101ba6004803603604081101561048857600080fd5b50600160a060020a038135169060200135611a47565b6000806000806104ac61281f565b6000868152600b602052604090819020815161014081019092528054829060ff1660048111156104d857fe5b60048111156104e357fe5b8152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020016009820154815250509050806000015181604001518260e001518361010001519450945094509450509193509193565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b1580156105db57600080fd5b505afa1580156105ef573d6000803e3d6000fd5b505050506040513d602081101561060557600080fd5b5051151561061257600080fd5b6000818152600c602052604090206005810154431161063057600080fd5b600681015460ff1615156106495780546106499061121d565b600681015460ff16151561065c57600080fd5b600954600480830154604080517ff8a2e51000000000000000000000000000000000000000000000000000000000815292830191909152600160a060020a0386811660248401529051600093919091169163f8a2e510916044808301926020929190829003018186803b1580156106d257600080fd5b505afa1580156106e6573d6000803e3d6000fd5b505050506040513d60208110156106fc57600080fd5b5051600954600480850154604080517f1b89ef0f0000000000000000000000000000000000000000000000000000000081529283019190915251929350600092600160a060020a0390921691631b89ef0f91602480820192602092909190829003018186803b15801561076e57600080fd5b505afa158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b505160028401549091506000906107c79083906107bb908663ffffffff611c8c16565b9063ffffffff611cc016565b60038501549091506107df908263ffffffff611ce416565b6003850155600a546008546040805160e060020a63095ea7b3028152600160a060020a039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561084057600080fd5b505af1158015610854573d6000803e3d6000fd5b505050506040513d602081101561086a57600080fd5b5050600854604080517f5d8a776e000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301526024820185905291519190921691635d8a776e91604480830192600092919082900301818387803b1580156108da57600080fd5b505af11580156108ee573d6000803e3d6000fd5b50505050505050505050565b600854600160a060020a03165b90565b60045490565b6000818152600b6020526040902061092781611cf9565b5050565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b15801561097957600080fd5b505afa15801561098d573d6000803e3d6000fd5b505050506040513d60208110156109a357600080fd5b505115156109b057600080fd5b6000818152600b602052604090206008810154600160a060020a038481169116146109da57600080fd5b6001815460ff1660048111156109ec57fe5b148015610a11575043610a0e600154836002015461200990919063ffffffff16565b11155b1515610a1c57600080fd5b805460ff19166002178155436003820155600581015460001315610a495760055443036006820155610a50565b4360068201555b610a5981611cf9565b600781015460088201546001830154610a7c9291600160a060020a03169061201b565b505050565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d6020811015610af957600080fd5b50511515610b0657600080fd5b600654821015610b1557600080fd5b600854604080517ffe417fa5000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482018690529151919092169163fe417fa591604480830192600092919082900301818387803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b5050506000848152600b602052604081209150815460ff166004811115610bba57fe5b14610bc457600080fd5b8054600160ff1990911681178255808201849055436002830190815560078301868155600884018054600160a060020a031916600160a060020a038a811691909117825560058601879055600e805495860181556000527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd909401889055915490549154610c56939192911685612179565b5050505050565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015610cab57600080fd5b505afa158015610cbf573d6000803e3d6000fd5b505050506040513d6020811015610cd557600080fd5b50511515610ce257600080fd5b6000818152600b602052604090206008810154600160a060020a03848116911614610d0c57600080fd5b6001815460ff166004811115610d1e57fe5b1415610e9357600a5460085460018301546040805160e060020a63095ea7b3028152600160a060020a039384166004820152602481019290925251919092169163095ea7b39160448083019260209291908290030181600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b505050506040513d6020811015610daf57600080fd5b505060085460018201546040805160e060020a63f40d71f1028152600160a060020a03878116600483015260248201939093529051919092169163f40d71f191604480830192600092919082900301818387803b158015610e0f57600080fd5b505af1158015610e23573d6000803e3d6000fd5b5050506000838152600b60205260408120805460ff1916815560018101829055600281018290556003810182905560048101829055600581018290556006810182905560078101829055600881018054600160a060020a03191690556009015550610e8d826122f4565b50610927565b6002815460ff166004811115610ea557fe5b14610eaf57600080fd5b805460ff191660049081178255805443019082015560078101546008820154610a7c9190600160a060020a0316600061201b565b60075490565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015610f3757600080fd5b505afa158015610f4b573d6000803e3d6000fd5b505050506040513d6020811015610f6157600080fd5b50511515610f6e57600080fd5b6000818152600b602052604090206001815460ff166004811115610f8e57fe5b1480610fa957506002815460ff166004811115610fa757fe5b145b80610fc357506004815460ff166004811115610fc157fe5b145b1515610fce57600080fd5b610fd781611cf9565b6000815460ff166004811115610fe957fe5b1415610ff55750610927565b805460ff19166003178155600d8054600983018190556000818152600c602052604080822060019384019094556008549285015481517ffe417fa5000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301526024820192909252915193169263fe417fa59260448084019391929182900301818387803b15801561108f57600080fd5b505af11580156110a3573d6000803e3d6000fd5b505050506001828101546003838101919091559082018054600160a060020a031916600160a060020a03878116919091179091556007840154835581544390810160058501556009546002549354604080517fbad62d20000000000000000000000000000000000000000000000000000000008152958401600487015292016024850152905191169163bad62d209160448083019260209291908290030181600087803b15801561115357600080fd5b505af1158015611167573d6000803e3d6000fd5b505050506040513d602081101561117d57600080fd5b50516004820181905560078301546008840154600184015460098601546111b394600160a060020a039384169390921691612375565b50505050565b60065490565b6060600e80548060200260200160405190810160405280929190818152602001828054801561120d57602002820191906000526020600020905b8154815260200190600101908083116111f9575b5050505050905090565b60015490565b6000818152600b6020908152604080832060098101548452600c9092529091206003825460ff16600481111561124f57fe5b1461125957600080fd5b6005810154431161126957600080fd5b600681015460ff161561127b57600080fd5b600182015460038201541461128f57600080fd5b600954600480830154604080517f0dca7ed80000000000000000000000000000000000000000000000000000000081529283019190915251600092600160a060020a031691630dca7ed8916024808301926020929190829003018186803b1580156112f957600080fd5b505afa15801561130d573d6000803e3d6000fd5b505050506040513d602081101561132357600080fd5b50516007546001850154919250600091611349916064916107bb9163ffffffff611c8c16565b6001850154909150611361908263ffffffff611ce416565b600284015560018214156116735760068301805460ff1961ff001990911661010017166001908117909155600880549086015491860154604080517f47298f82000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092525192909116916347298f829160448082019260009290919082900301818387803b15801561140457600080fd5b505af1158015611418573d6000803e3d6000fd5b505050600384015460009150611434908363ffffffff61200916565b600a546008546040805160e060020a63095ea7b3028152600160a060020a03928316600482015260248101859052905193945091169163095ea7b3916044808201926020929091908290030181600087803b15801561149257600080fd5b505af11580156114a6573d6000803e3d6000fd5b505050506040513d60208110156114bc57600080fd5b5050600854600185015460038601546040805160e060020a63f40d71f1028152600160a060020a039384166004820152602481019290925251919092169163f40d71f191604480830192600092919082900301818387803b15801561152057600080fd5b505af1158015611534573d6000803e3d6000fd5b50506008546001870154604080517f5d8a776e000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018890529051919092169350635d8a776e9250604480830192600092919082900301818387803b1580156115ab57600080fd5b505af11580156115bf573d6000803e3d6000fd5b50505060038501546115d891508363ffffffff611ce416565b6003850155600785015460088601546115fc9190600160a060020a0316600061201b565b61160985600701546122f4565b506007808501546000908152600b60205260408120805460ff19168155600181018290556002810182905560038101829055600481018290556005810182905560068101829055918201819055600882018054600160a060020a0319169055600990910155610c56565b60068301805461ffff191660019081179091556008548185015491860154604080517f47298f82000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092525192909116916347298f829160448082019260009290919082900301818387803b1580156116fd57600080fd5b505af1158015611711573d6000803e3d6000fd5b505050600384015461172a91508263ffffffff611ce416565b6003840155600a546008546040805160e060020a63095ea7b3028152600160a060020a039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b505050506040513d60208110156117b557600080fd5b50506008805490850154604080517f5d8a776e000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519190921691635d8a776e91604480830192600092919082900301818387803b15801561182a57600080fd5b505af115801561183e573d6000803e3d6000fd5b505050506000846004015411156119cc57600a5460085460018601546040805160e060020a63095ea7b3028152600160a060020a039384166004820152602481019290925251919092169163095ea7b39160448083019260209291908290030181600087803b1580156118b057600080fd5b505af11580156118c4573d6000803e3d6000fd5b505050506040513d60208110156118da57600080fd5b5050600880549085015460018601546040805160e060020a63f40d71f1028152600160a060020a039384166004820152602481019290925251919092169163f40d71f191604480830192600092919082900301818387803b15801561193e57600080fd5b505af1158015611952573d6000803e3d6000fd5b5050505061196384600701546122f4565b6007808501546000908152600b60205260408120805460ff19168155600181018290556002810182905560038101829055600481018290556005810182905560068101829055918201819055600882018054600160a060020a0319169055600990910155611a03565b6000846003015411156119f057835460ff1916600217845560006009850155611a03565b835460ff19166001178455600060098501555b6002830154600384015414610c5657600080fd5b60055490565b60035490565b60025490565b600a54600160a060020a031690565b600954600160a060020a031690565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015611a9557600080fd5b505afa158015611aa9573d6000803e3d6000fd5b505050506040513d6020811015611abf57600080fd5b50511515611acc57600080fd5b6000818152600b602052604090206008810154600160a060020a03848116911614611af657600080fd5b6004815460ff166004811115611b0857fe5b14611b1257600080fd5b6004810154431015611b2357600080fd5b600a5460085460018301546040805160e060020a63095ea7b3028152600160a060020a039384166004820152602481019290925251919092169163095ea7b39160448083019260209291908290030181600087803b158015611b8457600080fd5b505af1158015611b98573d6000803e3d6000fd5b505050506040513d6020811015611bae57600080fd5b505060085460018201546040805160e060020a63f40d71f1028152600160a060020a03878116600483015260248201939093529051919092169163f40d71f191604480830192600092919082900301818387803b158015611c0e57600080fd5b505af1158015611c22573d6000803e3d6000fd5b5050506000838152600b60205260408120805460ff1916815560018101829055600281018290556003810182905560048101829055600581018290556006810182905560078101829055600881018054600160a060020a03191690556009015550610a7c826122f4565b6000821515611c9d57506000611cba565b828202828482811515611cac57fe5b0414611cb757600080fd5b90505b92915050565b6000808211611cce57600080fd5b60008284811515611cdb57fe5b04949350505050565b600082821115611cf357600080fd5b50900390565b611d02816124f5565b15612006576000611d266005546107bb846006015443611ce490919063ffffffff16565b9050600082600501541315611dee57600a5460088301546005840154600160a060020a039283169263449a52f8921690611d66908563ffffffff611c8c16565b6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015611dd157600080fd5b505af1158015611de5573d6000803e3d6000fd5b50505050611fd7565b6005820154600090611e089082038363ffffffff611c8c16565b6008805490850154604080517f9e546c38000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519394506000939190921691639e546c38916024808301926020929190829003018186803b158015611e7957600080fd5b505afa158015611e8d573d6000803e3d6000fd5b505050506040513d6020811015611ea357600080fd5b5051905081811015611f48576008805490850154604080517f79cc6790000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101859052905191909216916379cc679091604480830192600092919082900301818387803b158015611f2257600080fd5b505af1158015611f36573d6000803e3d6000fd5b50505050611f4384612532565b611fd4565b6008805490850154604080517f79cc6790000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101869052905191909216916379cc679091604480830192600092919082900301818387803b158015611fbb57600080fd5b505af1158015611fcf573d6000803e3d6000fd5b505050505b50505b600554611fff90611fee908363ffffffff611c8c16565b60068401549063ffffffff61200916565b6006830155505b50565b600082820183811015611cb757600080fd5b604080516003808252608082019092526060916020820183803883390190505090508381600081518110151561204d57fe5b602090810290910101528051600160a060020a038416908290600190811061207157fe5b60209081029091010152805182908290600290811061208c57fe5b6020908102909101810191909152600f546040805160e060020a632790240102815260048101918252601760448201527f56616c696461746f7252656769737472795570646174650000000000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b8381101561213557818101518382015260200161211d565b505050509050019350505050600060405180830381600087803b15801561215b57600080fd5b505af115801561216f573d6000803e3d6000fd5b5050505050505050565b60408051600480825260a0820190925260609160208201608080388339019050509050838160008151811015156121ac57fe5b6020908102909101015280518590829060019081106121c757fe5b602090810290910101528051600160a060020a03841690829060029081106121eb57fe5b60209081029091010152805182908290600390811061220657fe5b6020908102909101810191909152600f546040805160e060020a632790240102815260048101918252601360448201527f56616c696461746f7252656769737465726564000000000000000000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b838110156122af578181015183820152602001612297565b505050509050019350505050600060405180830381600087803b1580156122d557600080fd5b505af11580156122e9573d6000803e3d6000fd5b505050505050505050565b60005b600e548110156109275781600e8281548110151561231157fe5b9060005260206000200154141561236d57600e8054600019810190811061233457fe5b9060005260206000200154600e8281548110151561234e57fe5b600091825260209091200155600e805490610e8d90600019830161287f565b6001016122f7565b60408051600580825260c082019092526060916020820160a080388339019050509050858160008151811015156123a857fe5b602090810290910101528051600160a060020a03861690829060019081106123cc57fe5b602090810290910101528051600160a060020a03851690829060029081106123f057fe5b60209081029091010152805183908290600390811061240b57fe5b60209081029091010152805182908290600490811061242657fe5b6020908102909101810191909152600f546040805160e060020a632790240102815260048101918252601360448201527f56616c696461746f724368616c6c656e676564000000000000000000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b838110156124cf5781810151838201526020016124b7565b505050509050019350505050600060405180830381600087803b1580156108da57600080fd5b60006002825460ff16600481111561250957fe5b1480156125195750600582015415155b8015611cba575043600554836006015401111592915050565b61253b816126d3565b6007810154600882015461255a9190600160a060020a0316600061201b565b600a5460085460018301546040805160e060020a63095ea7b3028152600160a060020a039384166004820152602481019290925251919092169163095ea7b39160448083019260209291908290030181600087803b1580156125bb57600080fd5b505af11580156125cf573d6000803e3d6000fd5b505050506040513d60208110156125e557600080fd5b5050600880549082015460018301546040805160e060020a63f40d71f1028152600160a060020a039384166004820152602481019290925251919092169163f40d71f191604480830192600092919082900301818387803b15801561264957600080fd5b505af115801561265d573d6000803e3d6000fd5b505050600780830180546000908152600b60205260408120805460ff19168155600181018290556002810182905560038101829055600481018290556005810182905560068101829055928301819055600883018054600160a060020a03191690556009909201919091555461200691506122f4565b60408051600480825260a0820190925260609160208201608080388339019050509050816007015481600081518110151561270a57fe5b6020908102909101015260088201548151600160a060020a03909116908290600290811061273457fe5b6020908102909101810191909152600f546040805160e060020a632790240102815260048101918252601a60448201527f56616c696461746f72546f7563686564416e6452656d6f7665640000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b838110156127dd5781810151838201526020016127c5565b505050509050019350505050600060405180830381600087803b15801561280357600080fd5b505af1158015612817573d6000803e3d6000fd5b505050505050565b6040805161014081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600080191681526020016000600160a060020a03168152602001600081525090565b815481835581811115610a7c57600083815260209020610a7c91810190830161090791905b808211156128b857600081556001016128a4565b509056fea165627a7a72305820025e9f3a37b72ccae6f73df7b80b69338648bdc971efd87dd97b411ba13faf3d0029",
  "deployedBytecode": "0x6080604052600436106101115763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663175c0d168114610116578063183085c01461018157806361d027b3146101bc578063753d7445146101ed5780637790ddc61461021457806377a2b56f1461023e578063858e48fe14610277578063878432a6146102bc5780638ea17b2d146102f5578063a0b3030f1461030a578063b9d1d49b14610343578063ca1e781914610358578063d07e98b5146103bd578063d32c943a146103d2578063e88dc5b7146103fc578063f3f480d914610411578063f713b05214610426578063fc0c546a1461043b578063fce1ccca14610450578063ff8f3e6214610465575b600080fd5b34801561012257600080fd5b506101406004803603602081101561013957600080fd5b503561049e565b6040518085600481111561015057fe5b60ff168152602081019490945250604080840192909252600160a060020a0316606083015251908190036080019150f35b34801561018d57600080fd5b506101ba600480360360408110156101a457600080fd5b50600160a060020a03813516906020013561058d565b005b3480156101c857600080fd5b506101d16108fa565b60408051600160a060020a039092168252519081900360200190f35b3480156101f957600080fd5b5061020261090a565b60408051918252519081900360200190f35b34801561022057600080fd5b506101ba6004803603602081101561023757600080fd5b5035610910565b34801561024a57600080fd5b506101ba6004803603604081101561026157600080fd5b50600160a060020a03813516906020013561092b565b34801561028357600080fd5b506101ba6004803603608081101561029a57600080fd5b50600160a060020a038135169060208101359060408101359060600135610a81565b3480156102c857600080fd5b506101ba600480360360408110156102df57600080fd5b50600160a060020a038135169060200135610c5d565b34801561030157600080fd5b50610202610ee3565b34801561031657600080fd5b506101ba6004803603604081101561032d57600080fd5b50600160a060020a038135169060200135610ee9565b34801561034f57600080fd5b506102026111b9565b34801561036457600080fd5b5061036d6111bf565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103a9578181015183820152602001610391565b505050509050019250505060405180910390f35b3480156103c957600080fd5b50610202611217565b3480156103de57600080fd5b506101ba600480360360208110156103f557600080fd5b503561121d565b34801561040857600080fd5b50610202611a17565b34801561041d57600080fd5b50610202611a1d565b34801561043257600080fd5b50610202611a23565b34801561044757600080fd5b506101d1611a29565b34801561045c57600080fd5b506101d1611a38565b34801561047157600080fd5b506101ba6004803603604081101561048857600080fd5b50600160a060020a038135169060200135611a47565b6000806000806104ac61281f565b6000868152600b602052604090819020815161014081019092528054829060ff1660048111156104d857fe5b60048111156104e357fe5b8152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a031681526020016009820154815250509050806000015181604001518260e001518361010001519450945094509450509193509193565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b1580156105db57600080fd5b505afa1580156105ef573d6000803e3d6000fd5b505050506040513d602081101561060557600080fd5b5051151561061257600080fd5b6000818152600c602052604090206005810154431161063057600080fd5b600681015460ff1615156106495780546106499061121d565b600681015460ff16151561065c57600080fd5b600954600480830154604080517ff8a2e51000000000000000000000000000000000000000000000000000000000815292830191909152600160a060020a0386811660248401529051600093919091169163f8a2e510916044808301926020929190829003018186803b1580156106d257600080fd5b505afa1580156106e6573d6000803e3d6000fd5b505050506040513d60208110156106fc57600080fd5b5051600954600480850154604080517f1b89ef0f0000000000000000000000000000000000000000000000000000000081529283019190915251929350600092600160a060020a0390921691631b89ef0f91602480820192602092909190829003018186803b15801561076e57600080fd5b505afa158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b505160028401549091506000906107c79083906107bb908663ffffffff611c8c16565b9063ffffffff611cc016565b60038501549091506107df908263ffffffff611ce416565b6003850155600a546008546040805160e060020a63095ea7b3028152600160a060020a039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561084057600080fd5b505af1158015610854573d6000803e3d6000fd5b505050506040513d602081101561086a57600080fd5b5050600854604080517f5d8a776e000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301526024820185905291519190921691635d8a776e91604480830192600092919082900301818387803b1580156108da57600080fd5b505af11580156108ee573d6000803e3d6000fd5b50505050505050505050565b600854600160a060020a03165b90565b60045490565b6000818152600b6020526040902061092781611cf9565b5050565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b15801561097957600080fd5b505afa15801561098d573d6000803e3d6000fd5b505050506040513d60208110156109a357600080fd5b505115156109b057600080fd5b6000818152600b602052604090206008810154600160a060020a038481169116146109da57600080fd5b6001815460ff1660048111156109ec57fe5b148015610a11575043610a0e600154836002015461200990919063ffffffff16565b11155b1515610a1c57600080fd5b805460ff19166002178155436003820155600581015460001315610a495760055443036006820155610a50565b4360068201555b610a5981611cf9565b600781015460088201546001830154610a7c9291600160a060020a03169061201b565b505050565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d6020811015610af957600080fd5b50511515610b0657600080fd5b600654821015610b1557600080fd5b600854604080517ffe417fa5000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482018690529151919092169163fe417fa591604480830192600092919082900301818387803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b5050506000848152600b602052604081209150815460ff166004811115610bba57fe5b14610bc457600080fd5b8054600160ff1990911681178255808201849055436002830190815560078301868155600884018054600160a060020a031916600160a060020a038a811691909117825560058601879055600e805495860181556000527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd909401889055915490549154610c56939192911685612179565b5050505050565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015610cab57600080fd5b505afa158015610cbf573d6000803e3d6000fd5b505050506040513d6020811015610cd557600080fd5b50511515610ce257600080fd5b6000818152600b602052604090206008810154600160a060020a03848116911614610d0c57600080fd5b6001815460ff166004811115610d1e57fe5b1415610e9357600a5460085460018301546040805160e060020a63095ea7b3028152600160a060020a039384166004820152602481019290925251919092169163095ea7b39160448083019260209291908290030181600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b505050506040513d6020811015610daf57600080fd5b505060085460018201546040805160e060020a63f40d71f1028152600160a060020a03878116600483015260248201939093529051919092169163f40d71f191604480830192600092919082900301818387803b158015610e0f57600080fd5b505af1158015610e23573d6000803e3d6000fd5b5050506000838152600b60205260408120805460ff1916815560018101829055600281018290556003810182905560048101829055600581018290556006810182905560078101829055600881018054600160a060020a03191690556009015550610e8d826122f4565b50610927565b6002815460ff166004811115610ea557fe5b14610eaf57600080fd5b805460ff191660049081178255805443019082015560078101546008820154610a7c9190600160a060020a0316600061201b565b60075490565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015610f3757600080fd5b505afa158015610f4b573d6000803e3d6000fd5b505050506040513d6020811015610f6157600080fd5b50511515610f6e57600080fd5b6000818152600b602052604090206001815460ff166004811115610f8e57fe5b1480610fa957506002815460ff166004811115610fa757fe5b145b80610fc357506004815460ff166004811115610fc157fe5b145b1515610fce57600080fd5b610fd781611cf9565b6000815460ff166004811115610fe957fe5b1415610ff55750610927565b805460ff19166003178155600d8054600983018190556000818152600c602052604080822060019384019094556008549285015481517ffe417fa5000000000000000000000000000000000000000000000000000000008152600160a060020a0389811660048301526024820192909252915193169263fe417fa59260448084019391929182900301818387803b15801561108f57600080fd5b505af11580156110a3573d6000803e3d6000fd5b505050506001828101546003838101919091559082018054600160a060020a031916600160a060020a03878116919091179091556007840154835581544390810160058501556009546002549354604080517fbad62d20000000000000000000000000000000000000000000000000000000008152958401600487015292016024850152905191169163bad62d209160448083019260209291908290030181600087803b15801561115357600080fd5b505af1158015611167573d6000803e3d6000fd5b505050506040513d602081101561117d57600080fd5b50516004820181905560078301546008840154600184015460098601546111b394600160a060020a039384169390921691612375565b50505050565b60065490565b6060600e80548060200260200160405190810160405280929190818152602001828054801561120d57602002820191906000526020600020905b8154815260200190600101908083116111f9575b5050505050905090565b60015490565b6000818152600b6020908152604080832060098101548452600c9092529091206003825460ff16600481111561124f57fe5b1461125957600080fd5b6005810154431161126957600080fd5b600681015460ff161561127b57600080fd5b600182015460038201541461128f57600080fd5b600954600480830154604080517f0dca7ed80000000000000000000000000000000000000000000000000000000081529283019190915251600092600160a060020a031691630dca7ed8916024808301926020929190829003018186803b1580156112f957600080fd5b505afa15801561130d573d6000803e3d6000fd5b505050506040513d602081101561132357600080fd5b50516007546001850154919250600091611349916064916107bb9163ffffffff611c8c16565b6001850154909150611361908263ffffffff611ce416565b600284015560018214156116735760068301805460ff1961ff001990911661010017166001908117909155600880549086015491860154604080517f47298f82000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092525192909116916347298f829160448082019260009290919082900301818387803b15801561140457600080fd5b505af1158015611418573d6000803e3d6000fd5b505050600384015460009150611434908363ffffffff61200916565b600a546008546040805160e060020a63095ea7b3028152600160a060020a03928316600482015260248101859052905193945091169163095ea7b3916044808201926020929091908290030181600087803b15801561149257600080fd5b505af11580156114a6573d6000803e3d6000fd5b505050506040513d60208110156114bc57600080fd5b5050600854600185015460038601546040805160e060020a63f40d71f1028152600160a060020a039384166004820152602481019290925251919092169163f40d71f191604480830192600092919082900301818387803b15801561152057600080fd5b505af1158015611534573d6000803e3d6000fd5b50506008546001870154604080517f5d8a776e000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018890529051919092169350635d8a776e9250604480830192600092919082900301818387803b1580156115ab57600080fd5b505af11580156115bf573d6000803e3d6000fd5b50505060038501546115d891508363ffffffff611ce416565b6003850155600785015460088601546115fc9190600160a060020a0316600061201b565b61160985600701546122f4565b506007808501546000908152600b60205260408120805460ff19168155600181018290556002810182905560038101829055600481018290556005810182905560068101829055918201819055600882018054600160a060020a0319169055600990910155610c56565b60068301805461ffff191660019081179091556008548185015491860154604080517f47298f82000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092525192909116916347298f829160448082019260009290919082900301818387803b1580156116fd57600080fd5b505af1158015611711573d6000803e3d6000fd5b505050600384015461172a91508263ffffffff611ce416565b6003840155600a546008546040805160e060020a63095ea7b3028152600160a060020a039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b505050506040513d60208110156117b557600080fd5b50506008805490850154604080517f5d8a776e000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519190921691635d8a776e91604480830192600092919082900301818387803b15801561182a57600080fd5b505af115801561183e573d6000803e3d6000fd5b505050506000846004015411156119cc57600a5460085460018601546040805160e060020a63095ea7b3028152600160a060020a039384166004820152602481019290925251919092169163095ea7b39160448083019260209291908290030181600087803b1580156118b057600080fd5b505af11580156118c4573d6000803e3d6000fd5b505050506040513d60208110156118da57600080fd5b5050600880549085015460018601546040805160e060020a63f40d71f1028152600160a060020a039384166004820152602481019290925251919092169163f40d71f191604480830192600092919082900301818387803b15801561193e57600080fd5b505af1158015611952573d6000803e3d6000fd5b5050505061196384600701546122f4565b6007808501546000908152600b60205260408120805460ff19168155600181018290556002810182905560038101829055600481018290556005810182905560068101829055918201819055600882018054600160a060020a0319169055600990910155611a03565b6000846003015411156119f057835460ff1916600217845560006009850155611a03565b835460ff19166001178455600060098501555b6002830154600384015414610c5657600080fd5b60055490565b60035490565b60025490565b600a54600160a060020a031690565b600954600160a060020a031690565b6000546040805160e260020a6333b4fee70281523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015611a9557600080fd5b505afa158015611aa9573d6000803e3d6000fd5b505050506040513d6020811015611abf57600080fd5b50511515611acc57600080fd5b6000818152600b602052604090206008810154600160a060020a03848116911614611af657600080fd5b6004815460ff166004811115611b0857fe5b14611b1257600080fd5b6004810154431015611b2357600080fd5b600a5460085460018301546040805160e060020a63095ea7b3028152600160a060020a039384166004820152602481019290925251919092169163095ea7b39160448083019260209291908290030181600087803b158015611b8457600080fd5b505af1158015611b98573d6000803e3d6000fd5b505050506040513d6020811015611bae57600080fd5b505060085460018201546040805160e060020a63f40d71f1028152600160a060020a03878116600483015260248201939093529051919092169163f40d71f191604480830192600092919082900301818387803b158015611c0e57600080fd5b505af1158015611c22573d6000803e3d6000fd5b5050506000838152600b60205260408120805460ff1916815560018101829055600281018290556003810182905560048101829055600581018290556006810182905560078101829055600881018054600160a060020a03191690556009015550610a7c826122f4565b6000821515611c9d57506000611cba565b828202828482811515611cac57fe5b0414611cb757600080fd5b90505b92915050565b6000808211611cce57600080fd5b60008284811515611cdb57fe5b04949350505050565b600082821115611cf357600080fd5b50900390565b611d02816124f5565b15612006576000611d266005546107bb846006015443611ce490919063ffffffff16565b9050600082600501541315611dee57600a5460088301546005840154600160a060020a039283169263449a52f8921690611d66908563ffffffff611c8c16565b6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015611dd157600080fd5b505af1158015611de5573d6000803e3d6000fd5b50505050611fd7565b6005820154600090611e089082038363ffffffff611c8c16565b6008805490850154604080517f9e546c38000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519394506000939190921691639e546c38916024808301926020929190829003018186803b158015611e7957600080fd5b505afa158015611e8d573d6000803e3d6000fd5b505050506040513d6020811015611ea357600080fd5b5051905081811015611f48576008805490850154604080517f79cc6790000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101859052905191909216916379cc679091604480830192600092919082900301818387803b158015611f2257600080fd5b505af1158015611f36573d6000803e3d6000fd5b50505050611f4384612532565b611fd4565b6008805490850154604080517f79cc6790000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101869052905191909216916379cc679091604480830192600092919082900301818387803b158015611fbb57600080fd5b505af1158015611fcf573d6000803e3d6000fd5b505050505b50505b600554611fff90611fee908363ffffffff611c8c16565b60068401549063ffffffff61200916565b6006830155505b50565b600082820183811015611cb757600080fd5b604080516003808252608082019092526060916020820183803883390190505090508381600081518110151561204d57fe5b602090810290910101528051600160a060020a038416908290600190811061207157fe5b60209081029091010152805182908290600290811061208c57fe5b6020908102909101810191909152600f546040805160e060020a632790240102815260048101918252601760448201527f56616c696461746f7252656769737472795570646174650000000000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b8381101561213557818101518382015260200161211d565b505050509050019350505050600060405180830381600087803b15801561215b57600080fd5b505af115801561216f573d6000803e3d6000fd5b5050505050505050565b60408051600480825260a0820190925260609160208201608080388339019050509050838160008151811015156121ac57fe5b6020908102909101015280518590829060019081106121c757fe5b602090810290910101528051600160a060020a03841690829060029081106121eb57fe5b60209081029091010152805182908290600390811061220657fe5b6020908102909101810191909152600f546040805160e060020a632790240102815260048101918252601360448201527f56616c696461746f7252656769737465726564000000000000000000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b838110156122af578181015183820152602001612297565b505050509050019350505050600060405180830381600087803b1580156122d557600080fd5b505af11580156122e9573d6000803e3d6000fd5b505050505050505050565b60005b600e548110156109275781600e8281548110151561231157fe5b9060005260206000200154141561236d57600e8054600019810190811061233457fe5b9060005260206000200154600e8281548110151561234e57fe5b600091825260209091200155600e805490610e8d90600019830161287f565b6001016122f7565b60408051600580825260c082019092526060916020820160a080388339019050509050858160008151811015156123a857fe5b602090810290910101528051600160a060020a03861690829060019081106123cc57fe5b602090810290910101528051600160a060020a03851690829060029081106123f057fe5b60209081029091010152805183908290600390811061240b57fe5b60209081029091010152805182908290600490811061242657fe5b6020908102909101810191909152600f546040805160e060020a632790240102815260048101918252601360448201527f56616c696461746f724368616c6c656e676564000000000000000000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b838110156124cf5781810151838201526020016124b7565b505050509050019350505050600060405180830381600087803b1580156108da57600080fd5b60006002825460ff16600481111561250957fe5b1480156125195750600582015415155b8015611cba575043600554836006015401111592915050565b61253b816126d3565b6007810154600882015461255a9190600160a060020a0316600061201b565b600a5460085460018301546040805160e060020a63095ea7b3028152600160a060020a039384166004820152602481019290925251919092169163095ea7b39160448083019260209291908290030181600087803b1580156125bb57600080fd5b505af11580156125cf573d6000803e3d6000fd5b505050506040513d60208110156125e557600080fd5b5050600880549082015460018301546040805160e060020a63f40d71f1028152600160a060020a039384166004820152602481019290925251919092169163f40d71f191604480830192600092919082900301818387803b15801561264957600080fd5b505af115801561265d573d6000803e3d6000fd5b505050600780830180546000908152600b60205260408120805460ff19168155600181018290556002810182905560038101829055600481018290556005810182905560068101829055928301819055600883018054600160a060020a03191690556009909201919091555461200691506122f4565b60408051600480825260a0820190925260609160208201608080388339019050509050816007015481600081518110151561270a57fe5b6020908102909101015260088201548151600160a060020a03909116908290600290811061273457fe5b6020908102909101810191909152600f546040805160e060020a632790240102815260048101918252601a60448201527f56616c696461746f72546f7563686564416e6452656d6f7665640000000000006064820152608060248201908152855160848301528551600160a060020a039094169463279024019487949384939260a490910191868201910280838360005b838110156127dd5781810151838201526020016127c5565b505050509050019350505050600060405180830381600087803b15801561280357600080fd5b505af1158015612817573d6000803e3d6000fd5b505050505050565b6040805161014081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600080191681526020016000600160a060020a03168152602001600081525090565b815481835581811115610a7c57600083815260209020610a7c91810190830161090791905b808211156128b857600081556001016128a4565b509056fea165627a7a72305820025e9f3a37b72ccae6f73df7b80b69338648bdc971efd87dd97b411ba13faf3d0029",
  "sourceMap": "275:20314:12:-;;;408:1;374:35;;444:1;415:30;;483:1;451:33;;517:1;490:28;;553:1;524:30;;591:7;560:38;;635:2;604:33;;912:1;883:30;;1334:286;8:9:-1;5:2;;;30:1;27;20:12;5:2;1334:286:12;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1334:286:12;;;;;;;;;;;;;;;;;557:17:1;:67;;-1:-1:-1;;;;;557:67:1;;;-1:-1:-1;;;;;;557:67:1;;;;;;;1463:9:12;:38;;;;;;;;;;;;;1511:7;:32;;;;;;;;;;;;;;1562:16;;;;;;;1334:286;;;;;;;;1562:9;;;:14;;:16;;;;;1334:286;;1562:16;;;;;:9;:16;;;5:2:-1;;;;30:1;27;20:12;5:2;1562:16:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1562:16:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1562:16:12;1553:6;:25;;-1:-1:-1;;;;;1553:25:12;;;-1:-1:-1;;;;;;1553:25:12;;;;;;;1588:1;:25;;;;;;;;;;;;;;-1:-1:-1;;;275:20314:12;;;;;;",
  "deployedSourceMap": "275:20314:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4624:357;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4624:357:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4624:357:12;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4624:357:12;;;;;;;;-1:-1:-1;;;;;4624:357:12;;;;;;;;;;;;;-1:-1:-1;4624:357:12;12136:993;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12136:993:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12136:993:12;;;;;;;;;;;4148:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4148:92:12;;;;;;;;-1:-1:-1;;;;;4148:92:12;;;;;;;;;;;;;;2554:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2554:84:12;;;;;;;;;;;;;;;;;;;;13302:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13302:213:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13302:213:12;;;13744:889;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13744:889:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13744:889:12;;;;;;;;;5377:1086;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5377:1086:12;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;5377:1086:12;;;;;;;;;;;;;;;;;;;14848;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14848:1086:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14848:1086:12;;;;;;;;;3341:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3341:92:12;;;;6692:1551;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6692:1551:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6692:1551:12;;;;;;;;;3061:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3061:92:12;;;;3878:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3878:97:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3878:97:12;;;;;;;;;;;;;;;;;1794:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1794:98:12;;;;8381:3584;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8381:3584:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8381:3584:12;;;2797:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2797:88:12;;;;2307:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2307:94:12;;;;2051:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2051:88:12;;;;4400:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4400:86:12;;;;3618:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3618:88:12;;;;16149:821;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16149:821:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16149:821:12;;;;;;;;;4624:357;4681:13;4696:21;4719:27;4748:13;4829:22;;:::i;:::-;4854:17;;;;:9;:17;;;;;;;4829:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4829:42:12;-1:-1:-1;;;;;4829:42:12;-1:-1:-1;;;;;4829:42:12;;;;;;;;;;;;;;;4889:7;:14;;;4905:7;:24;;;4931:7;:27;;;4960:7;:13;;;4881:93;;;;;;;;;4624:357;;;;;:::o;12136:993::-;770:17:1;;:49;;;-1:-1:-1;;;;;770:49:1;;808:10;770:49;;;;;;-1:-1:-1;;;;;770:17:1;;;;:37;;:49;;;;;;;;;;;;;;;:17;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;770:49:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;770:49:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;770:49:1;762:58;;;;;;;;12226:27:12;12256:24;;;:11;:24;;;;;12355:22;;;;12340:12;:37;12332:46;;;;;;12426:19;;;;;;12425:20;12422:88;;;12478:20;;12461:38;;:16;:38::i;:::-;12573:19;;;;;;12565:28;;;;;;;;12649:7;;12675:16;;;;;12649:54;;;;;;;;;;;;;-1:-1:-1;;;;;12649:54:12;;;;;;;;;12628:18;;12649:7;;;;;:25;;:54;;;;;;;;;;;;;;:7;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;12649:54:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12649:54:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12649:54:12;12739:7;;12766:16;;;;;12739:44;;;;;;;;;;;;;;12649:54;;-1:-1:-1;12713:23:12;;-1:-1:-1;;;;;12739:7:12;;;;:26;;:44;;;;;12649:54;;12739:44;;;;;;;;:7;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;12739:44:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12739:44:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12739:44:12;12898:20;;;;12739:44;;-1:-1:-1;12882:13:12;;12898:63;;12739:44;;12898:39;;12923:13;12898:39;:24;:39;:::i;:::-;:43;:63;:43;:63;:::i;:::-;12991:17;;;;12882:79;;-1:-1:-1;12991:31:12;;12882:79;12991:31;:21;:31;:::i;:::-;12971:17;;;:51;13032:6;;13055:9;;13032:44;;;-1:-1:-1;;;;;13032:44:12;;-1:-1:-1;;;;;13055:9:12;;;13032:44;;;;;;;;;;;;:6;;;;;:14;;:44;;;;;;;;;;;;;;:6;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;13032:44:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13032:44:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;13086:9:12;;:36;;;;;;-1:-1:-1;;;;;13086:36:12;;;;;;;;;;;;;;;:9;;;;;:15;;:36;;;;;:9;;:36;;;;;;;:9;;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;13086:36:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13086:36:12;;;;830:1:1;;;;12136:993:12;;:::o;4148:92::-;4223:9;;-1:-1:-1;;;;;4223:9:12;4148:92;;:::o;2554:84::-;2620:11;;2554:84;:::o;13302:213::-;13380:23;13406:17;;;:9;:17;;;;;13485:23;13406:17;13485:14;:23::i;:::-;13302:213;;:::o;13744:889::-;770:17:1;;:49;;;-1:-1:-1;;;;;770:49:1;;808:10;770:49;;;;;;-1:-1:-1;;;;;770:17:1;;;;:37;;:49;;;;;;;;;;;;;;;:17;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;770:49:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;770:49:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;770:49:1;762:58;;;;;;;;13869:23:12;13895:30;;;:9;:30;;;;;14003:13;;;;-1:-1:-1;;;;;14003:26:12;;;:13;;:26;13995:35;;;;;;14066:14;14048;;;;:32;;;;;;;;;:100;;;;;14136:12;14084:48;14113:18;;14084:7;:24;;;:28;;:48;;;;:::i;:::-;:64;;14048:100;14040:109;;;;;;;;14194:32;;-1:-1:-1;;14194:32:12;14211:15;14194:32;;;14264:12;14236:25;;;:40;14289:18;;;;-1:-1:-1;;14286:175:12;;;14368:13;;14353:12;:28;14327:23;;;:54;14286:175;;;14438:12;14412:23;;;:38;14286:175;14470:23;14485:7;14470:14;:23::i;:::-;14560:27;;;;14589:13;;;;;14604:21;;;14532:94;;14560:27;-1:-1:-1;;;;;14589:13:12;;14532:27;:94::i;:::-;830:1:1;13744:889:12;;:::o;5377:1086::-;770:17:1;;:49;;;-1:-1:-1;;;;;770:49:1;;808:10;770:49;;;;;;-1:-1:-1;;;;;770:17:1;;;;:37;;:49;;;;;;;;;;;;;;;:17;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;770:49:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;770:49:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;770:49:1;762:58;;;;;;;;5616:15:12;;5599:32;;;5591:41;;;;;;5684:9;;:47;;;;;;-1:-1:-1;;;;;5684:47:12;;;;;;;;;;;;;;;:9;;;;;:21;;:47;;;;;:9;;:47;;;;;;;:9;;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;5684:47:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;5765:23:12;5791:30;;;:9;:30;;;;;;-1:-1:-1;5889:14:12;;;;:29;;;;;;;;;5881:38;;;;;;5959:31;;5976:14;-1:-1:-1;;5959:31:12;;;;;;;6000:21;;;:37;;;6074:12;6047:24;;;:39;;;6096:27;;;:49;;;6155:13;;;:25;;-1:-1:-1;;;;;;6155:25:12;-1:-1:-1;;;;;6155:25:12;;;;;;;;;6190:18;;;:31;;;6281:12;27:10:-1;;23:18;;;45:23;;-1:-1;6281:38:12;;;;;;;;6375:24;;6401:27;;6430:13;;6351:105;;6375:24;;6401:27;6430:13;6190:31;6351:23;:105::i;:::-;830:1:1;5377:1086:12;;;;:::o;14848:::-;770:17:1;;:49;;;-1:-1:-1;;;;;770:49:1;;808:10;770:49;;;;;;-1:-1:-1;;;;;770:17:1;;;;:37;;:49;;;;;;;;;;;;;;;:17;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;770:49:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;770:49:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;770:49:1;762:58;;;;;;;;14971:23:12;14997:30;;;:9;:30;;;;;15092:13;;;;-1:-1:-1;;;;;15092:26:12;;;:13;;:26;15084:35;;;;;;15221:14;15203;;;;:32;;;;;;;;;15200:431;;;15304:6;;15327:9;;15304:6;15339:21;;;15304:57;;;-1:-1:-1;;;;;15304:57:12;;-1:-1:-1;;;;;15327:9:12;;;15304:57;;;;;;;;;;;;:6;;;;;:14;;:57;;;;;;;;;;;;;;:6;;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;15304:57:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15304:57:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;15375:9:12;;;15410:21;;;15375:57;;;-1:-1:-1;;;;;15375:57:12;;-1:-1:-1;;;;;15375:57:12;;;;;;;;;;;;;;;;:9;;;;;:23;;:57;;;;;:9;;:57;;;;;;;:9;;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;15375:57:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;15518:30:12;;;;:9;:30;;;;;15511:37;;-1:-1:-1;;15511:37:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15511:37:12;;;;;;-1:-1:-1;15562:37:12;15528:19;15562:16;:37::i;:::-;15614:7;;;15200:431;15707:15;15689:14;;;;:33;;;;;;;;;15681:42;;;;;;15734:31;;-1:-1:-1;;15734:31:12;15751:14;15734:31;;;;;15810:11;;15795:12;:26;15775:17;;;:46;15881:27;;;;15910:13;;;;15853:74;;15881:27;-1:-1:-1;;;;;15910:13:12;-1:-1:-1;15853:27:12;:74::i;3341:92::-;3411:15;;3341:92;:::o;6692:1551::-;770:17:1;;:49;;;-1:-1:-1;;;;;770:49:1;;808:10;770:49;;;;;;-1:-1:-1;;;;;770:17:1;;;;:37;;:49;;;;;;;;;;;;;;;:17;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;770:49:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;770:49:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;770:49:1;762:58;;;;;;;;6819:23:12;6845:30;;;:9;:30;;;;;6999:14;6981;;;;:32;;;;;;;;;:69;;;-1:-1:-1;7035:15:12;7017:14;;;;:33;;;;;;;;;6981:69;:105;;;-1:-1:-1;7072:14:12;7054;;;;:32;;;;;;;;;6981:105;6973:114;;;;;;;;7274:23;7289:7;7274:14;:23::i;:::-;7328:11;7310:14;;;;:29;;;;;;;;;7307:41;;;7341:7;;;7307:41;7387:34;;-1:-1:-1;;7387:34:12;7404:17;7387:34;;;7458:13;;;7431:24;;;:40;;;-1:-1:-1;7539:26:12;;;:11;:26;;;;;;7387:34;7575:15;;;;;;7643:9;;7676:21;;;;7643:55;;;;;-1:-1:-1;;;;;7643:55:12;;;;;;;;;;;;;;;;:9;;;:21;;:55;;;;;-1:-1:-1;;7643:55:12;;;;;;-1:-1:-1;7643:9:12;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;7643:55:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;7761:21:12;;;;;7741:17;;;;:41;;;;7792:20;;;:32;;-1:-1:-1;;;;;;7792:32:12;-1:-1:-1;;;;;7792:32:12;;;;;;;;;;7857:27;;;;7834:50;;7934:16;;7919:12;:31;;;7894:22;;;:56;7979:7;;-1:-1:-1;8013:13:12;8043:16;;7979:81;;;;;;7998:28;;;7979:81;;;;8028:31;;7979:81;;;;;;:7;;;:18;;:81;;;;;;;;;;;;;;-1:-1:-1;7979:7:12;:81;;;5:2:-1;;;;30:1;27;20:12;5:2;7979:81:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7979:81:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7979:81:12;7960:16;;;:100;;;8127:27;;;;8156:13;;;;;8171:20;;;8193:24;;;;8103:133;;-1:-1:-1;;;;;8156:13:12;;;;8171:20;;;;8103:23;:133::i;:::-;830:1:1;;6692:1551:12;;:::o;3061:92::-;3131:15;;3061:92;:::o;3878:97::-;3921:16;3956:12;3949:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3878:97;:::o;1794:98::-;1867:18;;1794:98;:::o;8381:3584::-;8463:23;8489:17;;;:9;:17;;;;;;;;8558:24;;;;8546:37;;:11;:37;;;;;;8701:17;8683:14;;;;:35;;;;;;;;;8675:44;;;;;;8752:22;;;;8737:12;:37;8729:46;;;;;;8794:19;;;;;;8793:20;8785:29;;;;;;8853:21;;;;8832:17;;;;:42;8824:51;;;;;;8907:7;;8929:16;;;;;8907:39;;;;;;;;;;;;;;8886:18;;-1:-1:-1;;;;;8907:7:12;;:21;;:39;;;;;;;;;;;;;;:7;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;8907:39:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8907:39:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8907:39:12;9036:15;;9010:21;;;;8907:39;;-1:-1:-1;8993:14:12;;9010:51;;9057:3;;9010:42;;;:25;:42;:::i;:51::-;9094:21;;;;8993:68;;-1:-1:-1;9094:36:12;;8993:68;9094:36;:25;:36;:::i;:::-;9071:20;;;:59;9161:1;9144:18;;9141:2818;;;9178:16;;;:23;;-1:-1:-1;;;;9178:23:12;;;;;9215:26;9197:4;9215:26;;;;;;9317:9;;;9338:13;;;;9353:21;;;;9317:58;;;;;;-1:-1:-1;;;;;9338:13:12;;;9317:58;;;;;;;;;;;;:9;;;;;:20;;:58;;;;;9178:23;;9317:58;;;;;;;;9178:23;9317:9;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;9317:58:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;9658:17:12;;;;9627:28;;-1:-1:-1;9658:32:12;;9680:9;9658:32;:21;:32;:::i;:::-;9704:6;;9727:9;;9704:59;;;-1:-1:-1;;;;;9704:59:12;;-1:-1:-1;;;;;9727:9:12;;;9704:59;;;;;;;;;;;;9627:63;;-1:-1:-1;9704:6:12;;;:14;;:59;;;;;;;;;;;;;;;:6;;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;9704:59:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9704:59:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;9884:9:12;;;9908:20;;;9930:17;;;;9884:64;;;-1:-1:-1;;;;;9884:64:12;;-1:-1:-1;;;;;9908:20:12;;;9884:64;;;;;;;;;;;;:9;;;;;:23;;:64;;;;;:9;;:64;;;;;;;:9;;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;9884:64:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;9962:9:12;;;9978:20;;;9962:48;;;;;;-1:-1:-1;;;;;9978:20:12;;;9962:48;;;;;;;;;;;;:9;;;;;-1:-1:-1;9962:15:12;;-1:-1:-1;9962:48:12;;;;;:9;;:48;;;;;;;:9;;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;9962:48:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;10044:17:12;;;;:32;;-1:-1:-1;10066:9:12;10044:32;:21;:32;:::i;:::-;10024:17;;;:52;10159:27;;;;10188:13;;;;10131:74;;10159:27;-1:-1:-1;;;;;10188:13:12;;10131:27;:74::i;:::-;10220:45;10237:7;:27;;;10220:16;:45::i;:::-;-1:-1:-1;10296:27:12;;;;;10286:38;;;;:9;:38;;;;;10279:45;;-1:-1:-1;;10279:45:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10279:45:12;;;;;;;;9141:2818;;;10355:16;;;:24;;-1:-1:-1;;10393:26:12;10355:16;10393:26;;;;;;10489:9;;10510:20;;;;10532:21;;;;10489:65;;;;;;-1:-1:-1;;;;;10510:20:12;;;10489:65;;;;;;;;;;;;:9;;;;;:20;;:65;;;;;10374:5;;10489:65;;;;;;;;10374:5;10489:9;:65;;;5:2:-1;;;;30:1;27;20:12;5:2;10489:65:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;10681:17:12;;;;:32;;-1:-1:-1;10703:9:12;10681:32;:21;:32;:::i;:::-;10661:17;;;:52;10727:6;;10750:9;;10727:45;;;-1:-1:-1;;;;;10727:45:12;;-1:-1:-1;;;;;10750:9:12;;;10727:45;;;;;;;;;;;;:6;;;;;:14;;:45;;;;;;;;;;;;;;:6;;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;10727:45:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10727:45:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;10786:9:12;;;10802:13;;;;10786:41;;;;;;-1:-1:-1;;;;;10802:13:12;;;10786:41;;;;;;;;;;;;:9;;;;;:15;;:41;;;;;:9;;:41;;;;;;;:9;;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;10786:41:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10786:41:12;;;;10905:1;10885:7;:17;;;:21;10882:953;;;11137:6;;11160:9;;11137:6;11172:21;;;11137:57;;;-1:-1:-1;;;;;11137:57:12;;-1:-1:-1;;;;;11160:9:12;;;11137:57;;;;;;;;;;;;:6;;;;;:14;;:57;;;;;;;;;;;;;;:6;;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;11137:57:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11137:57:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;11212:9:12;;;11236:13;;;;11212:9;11251:21;;;11212:61;;;-1:-1:-1;;;;;11212:61:12;;-1:-1:-1;;;;;11236:13:12;;;11212:61;;;;;;;;;;;;:9;;;;;:23;;:61;;;;;:9;;:61;;;;;;;:9;;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;11212:61:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11212:61:12;;;;11360:45;11377:7;:27;;;11360:16;:45::i;:::-;11440:27;;;;;11430:38;;;;:9;:38;;;;;11423:45;;-1:-1:-1;;11423:45:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11423:45:12;;;;;;;;10882:953;;;11520:1;11492:7;:25;;;:29;11489:346;;;11587:32;;-1:-1:-1;;11587:32:12;11604:15;11587:32;;;-1:-1:-1;11637:24:12;;;:28;11489:346;;;11743:31;;-1:-1:-1;;11743:31:12;11760:14;11743:31;;;-1:-1:-1;11792:24:12;;;:28;11489:346;11927:20;;;;11906:17;;;;:41;11898:50;;;;;2797:88;2865:13;;2797:88;:::o;2307:94::-;2378:16;;2307:94;:::o;2051:88::-;2119:13;;2051:88;:::o;4400:86::-;4472:6;;-1:-1:-1;;;;;4472:6:12;4400:86;:::o;3618:88::-;3691:7;;-1:-1:-1;;;;;3691:7:12;3618:88;:::o;16149:821::-;770:17:1;;:49;;;-1:-1:-1;;;;;770:49:1;;808:10;770:49;;;;;;-1:-1:-1;;;;;770:17:1;;;;:37;;:49;;;;;;;;;;;;;;;:17;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;770:49:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;770:49:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;770:49:1;762:58;;;;;;;;16276:23:12;16302:30;;;:9;:30;;;;;16397:13;;;;-1:-1:-1;;;;;16397:26:12;;;:13;;:26;16389:35;;;;;;16557:14;16539;;;;:32;;;;;;;;;16531:41;;;;;;16590:17;;;;16611:12;-1:-1:-1;16590:33:12;16582:42;;;;;;16684:6;;16707:9;;16684:6;16719:21;;;16684:57;;;-1:-1:-1;;;;;16684:57:12;;-1:-1:-1;;;;;16707:9:12;;;16684:57;;;;;;;;;;;;:6;;;;;:14;;:57;;;;;;;;;;;;;;:6;;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;16684:57:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16684:57:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;16751:9:12;;;16786:21;;;16751:57;;;-1:-1:-1;;;;;16751:57:12;;-1:-1:-1;;;;;16751:57:12;;;;;;;;;;;;;;;;:9;;;;;:23;;:57;;;;;:9;;:57;;;;;;;:9;;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;16751:57:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;16886:30:12;;;;:9;:30;;;;;16879:37;;-1:-1:-1;;16879:37:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16879:37:12;;;;;;-1:-1:-1;16926:37:12;16896:19;16926:16;:37::i;229:421:14:-;287:7;527:6;;523:45;;;-1:-1:-1;556:1:14;549:8;;523:45;590:5;;;594:1;590;:5;613;;;;;;;;:10;605:19;;;;;;642:1;-1:-1:-1;229:421:14;;;;;:::o;778:296::-;836:7;929:5;;;921:14;;;;;;945:9;961:1;957;:5;;;;;;;;;778:296;-1:-1:-1;;;;778:296:14:o;1205:145::-;1263:7;1290:6;;;;1282:15;;;;;;-1:-1:-1;1319:5:14;;;1205:145::o;17198:950:12:-;17263:19;17280:1;17263:16;:19::i;:::-;17260:882;;;17298:18;17319:54;17359:13;;17319:35;17336:1;:17;;;17319:12;:16;;:35;;;;:::i;:54::-;17298:75;;17405:1;17390;:12;;;:16;17387:621;;;17426:6;;17440:7;;;;17454:12;;;;-1:-1:-1;;;;;17426:6:12;;;;:13;;17440:7;;17449:37;;17472:13;17449:37;:22;:37;:::i;:::-;17426:61;;;;;;;;;;;;;-1:-1:-1;;;;;17426:61:12;-1:-1:-1;;;;;17426:61:12;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17426:61:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17426:61:12;;;;17387:621;;;17551:12;;;;17526:17;;17546:42;;17551:17;;17574:13;17546:42;:27;:42;:::i;:::-;17633:9;;;17658:7;;;;17633:33;;;;;;-1:-1:-1;;;;;17658:7:12;;;17633:33;;;;;;17526:62;;-1:-1:-1;17606:24:12;;17633:9;;;;;:24;;:33;;;;;;;;;;;;;;:9;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;17633:33:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17633:33:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17633:33:12;;-1:-1:-1;17687:34:12;;;17684:310;;;17797:9;;;17816:7;;;;17797:48;;;;;;-1:-1:-1;;;;;17816:7:12;;;17797:48;;;;;;;;;;;;:9;;;;;:18;;:48;;;;;:9;;:48;;;;;;;:9;;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;17797:48:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17797:48:12;;;;17867:24;17889:1;17867:21;:24::i;:::-;17684:310;;;17934:9;;;17953:7;;;;17934:41;;;;;;-1:-1:-1;;;;;17953:7:12;;;17934:41;;;;;;;;;;;;:9;;;;;:18;;:41;;;;;:9;;:41;;;;;;;:9;;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;17934:41:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17934:41:12;;;;17684:310;17387:621;;;18098:13;;18076:55;;18098:32;;18116:13;18098:32;:17;:32;:::i;:::-;18076:17;;;;;:55;:21;:55;:::i;:::-;18056:17;;;:75;-1:-1:-1;17260:882:12;17198:950;:::o;1431:145:14:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;19140:326:12;19276:16;;;19290:1;19276:16;;;;;;;;;19252:21;;19276:16;;;19252:21;;105:10:-1;19276:16:12;88:34:-1;136:17;;-1:-1;19276:16:12;19252:40;;19312:19;19302:4;19307:1;19302:7;;;;;;;;;;;;;;;;;;:29;19341:7;;-1:-1:-1;;;;;19359:11:12;;;19341:4;;19351:20;;19341:7;;;;;;;;;;;;;;:30;19381:7;;19399:5;;19381:4;;19386:1;;19381:7;;;;;;;;;;;;;;;:24;;;;19415:1;;:44;;;-1:-1:-1;;;;;19415:44:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19415:1:12;;;;:11;;19454:4;;19415:44;;;;;;;;;;;;;;;;;:1;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;19415:44:12;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19415:44:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19415:44:12;;;;19140:326;;;;:::o;19472:395::-;19631:16;;;19645:1;19631:16;;;;;;;;;19607:21;;19631:16;;;17:15:-1;;105:10;19631:16:12;88:34:-1;136:17;;-1:-1;19631:16:12;19607:40;;19667:19;19657:4;19662:1;19657:7;;;;;;;;;;;;;;;;;;:29;19696:7;;19714:16;;19696:4;;19706:25;;19696:7;;;;;;;;;;;;;;:35;19741:7;;-1:-1:-1;;;;;19759:11:12;;;19741:4;;19746:1;;19741:7;;;;;;;;;;;;;;:30;19781:7;;19799:10;;19781:4;;19786:1;;19781:7;;;;;;;;;;;;;;;:29;;;;19820:1;;:40;;;-1:-1:-1;;;;;19820:40:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19820:1:12;;;;:11;;19855:4;;19820:40;;;;;;;;;;;;;;;;;:1;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;19820:40:12;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19820:40:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19820:40:12;;;;19472:395;;;;;:::o;18761:373::-;18884:6;18879:249;18900:12;:19;18896:23;;18879:249;;;18963:3;18944:12;18957:1;18944:15;;;;;;;;;;;;;;;;;;:22;18940:178;;;19004:12;19017:19;;-1:-1:-1;;19017:23:12;;;19004:37;;;;;;;;;;;;;;18986:12;18999:1;18986:15;;;;;;;;;;;;;;;;;;;:55;19059:12;:21;;;;;-1:-1:-1;;19059:21:12;;;:::i;18940:178::-;18921:3;;18879:249;;20144:443;20315:16;;;20329:1;20315:16;;;;;;;;;20291:21;;20315:16;;;17:15:-1;;105:10;20315:16:12;88:34:-1;136:17;;-1:-1;20315:16:12;20291:40;;20351:19;20341:4;20346:1;20341:7;;;;;;;;;;;;;;;;;;:29;20380:7;;-1:-1:-1;;;;;20398:11:12;;;20380:4;;20390:20;;20380:7;;;;;;;;;;;;;;:30;20420:7;;-1:-1:-1;;;;;20438:16:12;;;20420:4;;20425:1;;20420:7;;;;;;;;;;;;;;:35;20465:7;;20483:11;;20465:4;;20470:1;;20465:7;;;;;;;;;;;;;;:30;20505:7;;20523:6;;20505:4;;20510:1;;20505:7;;;;;;;;;;;;;;;:25;;;;20540:1;;:40;;;-1:-1:-1;;;;;20540:40:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20540:1:12;;;;:11;;20575:4;;20540:40;;;;;;;;;;;;;;;;;:1;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;20540:40:12;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;16991:201:12;17059:4;17095:15;17083:8;;;;:27;;;;;;;;;:48;;;;-1:-1:-1;17114:12:12;;;;:17;;17083:48;:101;;;;;17172:12;17155:13;;17135:1;:17;;;:33;:49;;17075:110;16991:201;-1:-1:-1;;16991:201:12:o;18154:601::-;18314:33;18345:1;18314:30;:33::i;:::-;18385:21;;;;18408:7;;;;18357:62;;18385:21;-1:-1:-1;;;;;18408:7:12;;18357:27;:62::i;:::-;18479:6;;18502:9;;18479:6;18514:15;;;18479:51;;;-1:-1:-1;;;;;18479:51:12;;-1:-1:-1;;;;;18502:9:12;;;18479:51;;;;;;;;;;;;:6;;;;;:14;;:51;;;;;;;;;;;;;;:6;;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;18479:51:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18479:51:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;18540:9:12;;;18564:7;;;;18540:9;18573:15;;;18540:49;;;-1:-1:-1;;;;;18540:49:12;;-1:-1:-1;;;;;18564:7:12;;;18540:49;;;;;;;;;;;;:9;;;;;:23;;:49;;;;;:9;;:49;;;;;;;:9;;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;18540:49:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;18677:21:12;;;;;;18667:32;;;;:9;:32;;;;;18660:39;;-1:-1:-1;;18660:39:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18660:39:12;;;;;;;;;;;18726:21;18709:39;;-1:-1:-1;18709:16:12;:39::i;19873:265::-;19975:16;;;19989:1;19975:16;;;;;;;;;19951:21;;19975:16;;;17:15:-1;;105:10;19975:16:12;88:34:-1;136:17;;-1:-1;19975:16:12;19951:40;;20011:1;:21;;;20001:4;20006:1;20001:7;;;;;;;;;;;;;;;;;;:31;20065:7;;;;20042;;-1:-1:-1;;;;;20065:7:12;;;;20042:4;;20047:1;;20042:7;;;;;;;;;;;;;;;:32;;;;20084:1;;:47;;;-1:-1:-1;;;;;20084:47:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20084:1:12;;;;:11;;20126:4;;20084:47;;;;;;;;;;;;;;;;;:1;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;20084:47:12;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20084:47:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20084:47:12;;;;19873:265;;:::o;275:20314::-;;;;;;;;;;;-1:-1:-1;275:20314:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;275:20314:12;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity ^0.5.0;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"../event/EventEmitter.sol\";\nimport \"../treasury/Treasury.sol\";\nimport \"./IValidatorRegistry.sol\";\nimport \"../voting/Voting.sol\";\n\n/** @title ValidatorRegistry\n    @author Freydal\n*/\ncontract ValidatorRegistry is IValidatorRegistry, Authorizable {\n    using SafeMath for uint;\n\n    uint private _applicationPeriod = 8;\n    uint private _commitPeriod = 4;\n    uint private _challengePeriod = 8;\n    uint private _exitPeriod = 2;\n    uint private _rewardPeriod = 2;\n    uint private _minimumBalance = 1 ether;\n    uint private _stakeholderCut = 30; //Will be used as a percent so must be sub 100\n    Treasury private _treasury;\n    Voting private _voting;\n    DigmToken private _token;\n    mapping(bytes32 => Listing) private _listings;\n    mapping(uint => Challenge) private _challenges;\n    uint private nextChallenge = 1;\n    bytes32[] private _listingKeys;\n    EventEmitter private e;\n\n    /** @dev Create a new ValidatorRegistry implementation\n        @notice Create a new ValidatorRegistry implementation\n        @param _treasuryAddress Deployed Treasury address\n        @param _votingAddress Deployed Voting address\n        @param auth AuthorizedAddresses deployed address\n        @param _events Deployed EventEmitter address\n    */\n    constructor(address _treasuryAddress, address _votingAddress, address auth, address _events) Authorizable(auth) public {\n        _treasury = Treasury(_treasuryAddress);\n        _voting = Voting(_votingAddress);\n        _token = _treasury.digm();\n        e = EventEmitter(_events);\n    }\n\n    /** @dev Expose the configured applicationPeriod\n        @notice Expose the configured applicationPeriod\n        @return Application period length in blocks\n    */\n    function applicationPeriod() public view returns (uint) {\n        return _applicationPeriod;\n    }\n\n    /** @dev Expose the configured commitPeriod\n        @notice Expose the configured commitPeriod\n        @return Commit period length in blocks\n    */\n    function commitPeriod() public view returns (uint) {\n        return _commitPeriod;\n    }\n\n    /** @dev Expose the configured challengePeriod\n        @notice Expose the configured challengePeriod\n        @return Challenge period length in blocks\n    */\n    function challengePeriod() public view returns (uint) {\n        return _challengePeriod;\n    }\n\n    /** @dev Expose the configured exitPeriod\n        @notice Expose the configured exitPeriod\n        @return Exit period length in blocks\n    */\n    function exitPeriod() public view returns (uint) {\n        return _exitPeriod;\n    }\n\n    /** @dev Expose the configured rewardPeriod\n        @notice Expose the configured rewardPeriod\n        @return Reward period length in blocks\n    */\n    function rewardPeriod() public view returns (uint) {\n        return _rewardPeriod;\n    }\n\n    /** @dev Expose the configured minimumBalance\n        @notice Expose the configured minimumBalance\n        @return Minimum token balance to list and challenge\n    */\n    function minimumBalance() public view returns (uint) {\n        return _minimumBalance;\n    }\n\n    /** @dev Expose the configured stakeholderCut\n        @notice Expose the configured stakeholderCut\n        @return Number of tokens the stakeholder gets after a challenge\n    */\n    function stakeholderCut() public view returns (uint) {\n        return _stakeholderCut;\n    }\n\n    /** @dev Expose the configured Voting contract address\n        @notice Expose the configured Voting contract address\n        @return Configured Voting contract address\n    */\n    function voting() public view returns (address) {\n        return address(_voting);\n    }\n\n    /** @dev Expose the list of active validators\n        @notice Expose the list of active validators\n        @return An array of hex encoded tendermint keys\n    */\n    function validators() public view returns (bytes32[] memory) {\n        return _listingKeys;\n    }\n\n    /** @dev Expose the configured Treasury address\n        @notice Expose the configured Treasury address\n        @return Configured Treasury contract address\n    */\n    function treasury() public view returns (address) {\n        return address(_treasury);\n    }\n\n    /** @dev Expose the configured DigmToken\n        @notice Expose the configured DigmToken\n        @return Configured DigmToken contract address\n    */\n    function token() public view returns (address) {\n        return address(_token);\n    }\n\n    /** @dev Expose listing data\n        @notice Expose listing data\n        @param pubKey Hex encoded tendermint public key\n    */\n    function getListing(bytes32 pubKey) public view returns (Status status, uint applicationBlock, bytes32 tendermintPublicKey, address owner) {\n        //TODO: update output when structure more final\n        Listing memory listing = _listings[pubKey];\n        return (listing.status, listing.applicationBlock, listing.tendermintPublicKey, listing.owner);\n    }\n\n    /** @dev Register a listing\n        @notice Register a listing\n        @param msgSender msg.sender from the proxy call\n        @param tendermintPublicKey Hex encoded tendermint public key\n        @param tokensToStake The number of tokes at stake if the order is challenged\n        @param rewardRate The rate tokens are minted or destroyed over the active listings reward periods\n    */\n    function registerListing(address msgSender, bytes32 tendermintPublicKey, uint tokensToStake, int rewardRate) external isAuthorized {\n        //tokensToStake must be greater than or equal to _minimumBalance\n        require(tokensToStake >= _minimumBalance);\n\n        //Claim tokens from the treasury\n        _treasury.claimTokens(msgSender, tokensToStake);\n\n        //Load listing\n        Listing storage listing = _listings[tendermintPublicKey];\n\n        //Must not overwrite an existing listing\n        require(listing.status == Status.NULL);\n\n        //Set listing values\n        listing.status = Status.PENDING;\n        listing.stakedBalance = tokensToStake;\n        listing.applicationBlock = block.number;\n        listing.tendermintPublicKey = tendermintPublicKey;\n        listing.owner = msgSender;\n        listing.rewardRate = rewardRate;\n\n        //Add new listing public key to key list\n        _listingKeys.push(tendermintPublicKey);\n\n        //Emit event\n        emitValidatorRegistered(listing.applicationBlock, listing.tendermintPublicKey, listing.owner, rewardRate);\n    }\n\n    /** @dev Challenge a registered listing\n        @notice Challenge a registered listing\n        @param msgSender msg.sender from the proxy call\n        @param tendermintPublicKey Hex encoded tendermint public key\n    */\n    function challengeListing(address msgSender, bytes32 tendermintPublicKey) public isAuthorized {\n        //Load listing\n        Listing storage listing = _listings[tendermintPublicKey];\n\n        //Challenge pending and accepted listings.  -- More valid status may be added.\n        require(listing.status == Status.PENDING || listing.status == Status.ACCEPTED || listing.status == Status.EXITING);\n\n        //TODO When min balance becomes variable touch and remove if below balance;\n\n        //Ensure earns and burns are up to date  return if a touch and remove was executed\n        processRewards(listing);\n        if(listing.status == Status.NULL) return;\n\n        //Update the listing\n        listing.status = Status.CHALLENGED;\n        listing.currentChallenge = nextChallenge;\n\n        //Create challenge\n        Challenge storage challenge = _challenges[nextChallenge];\n        nextChallenge++;\n\n        //Pull tokens out of the treasury\n        _treasury.claimTokens(msgSender, listing.stakedBalance);\n\n        //Initialize challenge.\n        challenge.balance = listing.stakedBalance;\n        challenge.challenger = msgSender;\n        challenge.listingKey = listing.tendermintPublicKey;\n        challenge.challengeEnd = block.number + _challengePeriod;\n        challenge.pollId = _voting.createPoll(block.number + _commitPeriod, block.number + _challengePeriod);\n\n        //Emit challenged event\n        emitValidatorChallenged(listing.tendermintPublicKey, listing.owner, challenge.challenger, listing.currentChallenge, challenge.pollId);\n    }\n\n    /** @dev Resolve a challenge\n        @notice Resolve a challenge\n        @param pubKey Hex encoded tendermint public key\n    */\n    function resolveChallenge(bytes32 pubKey) public {\n        //Load listing\n        Listing storage listing = _listings[pubKey];\n        Challenge storage challenge = _challenges[listing.currentChallenge];\n\n        //Must be currently challenged and after the end block but not finalized\n        require(listing.status == Status.CHALLENGED);\n        require(block.number > challenge.challengeEnd);\n        require(!challenge.finalized);\n        require(challenge.balance == listing.stakedBalance);\n\n        uint winningOption = _voting.winningOption(challenge.pollId);\n\n        //calculate the holders cut\n        uint holderCut = listing.stakedBalance.mul(_stakeholderCut).div(100);\n        challenge.voterTotal = listing.stakedBalance.sub(holderCut);\n\n        if(winningOption == 1) {\n            challenge.passed = true;\n            challenge.finalized = true;\n\n            //Challenger won listing owner looses the tokens\n            _treasury.confiscate(listing.owner, listing.stakedBalance);\n\n            //Approve and release tokens to treasury for successful challenger\n            //Challenger receives his tokens back and cut of the listing balance.  Tokens available for distribution will be tracked in the challenge.balance\n            uint challengerTotalWinnings = challenge.balance.add(holderCut);\n            _token.approve(address(_treasury), challengerTotalWinnings);\n\n            // Release challenge stake, award new tokens then remove the award from the remaining reward.\n            _treasury.releaseTokens(challenge.challenger, challenge.balance);\n            _treasury.award(challenge.challenger, holderCut);\n            challenge.balance = challenge.balance.sub(holderCut);\n\n            //Emit event removing power\n            emitValidatorRegistryUpdate(listing.tendermintPublicKey, listing.owner, 0);\n\n            removeListingKey(listing.tendermintPublicKey);\n            delete _listings[listing.tendermintPublicKey];\n        } else {\n            challenge.passed = false;\n            challenge.finalized = true;\n\n            //Challenger lost and has lost the tokens.\n            _treasury.confiscate(challenge.challenger, listing.stakedBalance);\n\n            //Approve and release tokens to treasury for the listing holder Remaning tokens\n            challenge.balance = challenge.balance.sub(holderCut);\n            _token.approve(address(_treasury), holderCut);\n            _treasury.award(listing.owner, holderCut);\n\n            //Handle status transitions\n            if(listing.exitBlock > 0) { //Exiting challenge exit is completed\n                //listing was exiting and got challenged.  The listing will be removed by surviving the challenge.\n\n                //Approve and release tokens to treasury\n                _token.approve(address(_treasury), listing.stakedBalance);\n                _treasury.releaseTokens(listing.owner, listing.stakedBalance);\n\n                //Clear listing data and remove from tracking array\n                removeListingKey(listing.tendermintPublicKey);\n                delete _listings[listing.tendermintPublicKey];\n            } else if(listing.confirmationBlock > 0) { //Confirmed challenge is returned to accepted\n                listing.status = Status.ACCEPTED;\n                listing.currentChallenge = 0;\n            } else { //Pending challege returned to pending\n                listing.status = Status.PENDING;\n                listing.currentChallenge = 0;\n            }\n\n            //ensure the ending state is correct\n            require(challenge.balance == challenge.voterTotal);\n        }\n    }\n\n    /** @dev Claims winnings from a challenge\n        @notice Claims winnings from a challenge\n        @param challengeId Challenge id to claim rewards from.\n    */\n    function claimWinnings(address msgSender, uint challengeId) public isAuthorized {\n        Challenge storage challenge = _challenges[challengeId];\n\n        //Must be after challenge period\n        require(block.number > challenge.challengeEnd);\n\n        //Finalize the challenge\n        if(!challenge.finalized) {\n            resolveChallenge(challenge.listingKey);\n        }\n\n        //Ensure finalize has been completed\n        require(challenge.finalized);\n\n        //Get vote info\n        uint winningTokens = _voting.userWinningTokens(challenge.pollId, msgSender);\n        uint totalWinningTokens = _voting.totalWinningTokens(challenge.pollId);\n\n        //Approve and release tokens to treasury for the listing holder Remaning tokens\n        uint voterCut = challenge.voterTotal.mul(winningTokens).div(totalWinningTokens);\n        challenge.balance = challenge.balance.sub(voterCut);\n        _token.approve(address(_treasury), voterCut);\n        _treasury.award(msgSender, voterCut);\n    }\n\n    /** @dev Claims rewards for a listing\n        @notice Claims rewards for a listing\n        @param pubKey Public key for the listing to have rewards claimed\n    */\n    function claimRewards(bytes32 pubKey) public {\n        //Load listing\n        Listing storage listing = _listings[pubKey];\n\n        //Call process rewards with loaded listing\n        processRewards(listing);\n    }\n\n    /** @dev Confirm a listing registration\n        @notice Confirm a listing registration\n        @param msgSender msg.sender from the proxy call\n        @param tendermintPublicKey Hex encoded tendermint public key\n    */\n    function confirmListing(address msgSender, bytes32 tendermintPublicKey) public isAuthorized {\n        //Load listing\n        Listing storage listing = _listings[tendermintPublicKey];\n\n        //Must be called by owner after application period\n        require(listing.owner == msgSender);\n        require(listing.status == Status.PENDING && listing.applicationBlock.add(_applicationPeriod) <= block.number);\n\n        //Listing is now accepted\n        listing.status = Status.ACCEPTED;\n        listing.confirmationBlock = block.number;\n        if(listing.rewardRate < 0) {\n            listing.lastRewardBlock = block.number - _rewardPeriod;\n        } else {\n            listing.lastRewardBlock = block.number;\n        }\n        processRewards(listing);\n\n        //Emit update event\n        emitValidatorRegistryUpdate(listing.tendermintPublicKey, listing.owner, listing.stakedBalance);\n    }\n\n    /** @dev Initiate a listing exit\n        @notice Initiate a listing exit\n        @param msgSender msg.sender from the proxy call\n        @param tendermintPublicKey Hex encoded tendermint public key\n    */\n    function initExit(address msgSender, bytes32 tendermintPublicKey) public isAuthorized {\n        //Load the listing\n        Listing storage listing = _listings[tendermintPublicKey];\n\n        //Listing owner must call this method\n        require(listing.owner == msgSender);\n\n        //Exit immediately if the listing is still in pending status.\n        if(listing.status == Status.PENDING) {\n            //Approve and release tokens to treasury\n            _token.approve(address(_treasury), listing.stakedBalance);\n            _treasury.releaseTokens(msgSender, listing.stakedBalance);\n\n            //Clear listing data and remove from tracking array\n            delete _listings[tendermintPublicKey];\n            removeListingKey(tendermintPublicKey);\n\n            return;\n        }\n\n        //Ensure listing is in accepted\n        require(listing.status == Status.ACCEPTED);\n\n        listing.status = Status.EXITING;\n        listing.exitBlock = block.number + _exitPeriod;\n\n        //Emit event\n        emitValidatorRegistryUpdate(listing.tendermintPublicKey, listing.owner, 0);\n    }\n\n    /** @dev Complete a listing exit\n        @notice Complete a listing exit\n        @param msgSender msg.sender from the proxy call\n        @param tendermintPublicKey Hex encoded tendermint public key\n    */\n    function finalizeExit(address msgSender, bytes32 tendermintPublicKey) public isAuthorized {\n        //Load the listing\n        Listing storage listing = _listings[tendermintPublicKey];\n\n        //Listing owner must call this method\n        require(listing.owner == msgSender);\n\n        //The listing must be exiting and past the exit block challenge interrupts this process\n        require(listing.status == Status.EXITING);\n        require(listing.exitBlock <= block.number);\n\n        //Approve and release tokens to treasury\n        _token.approve(address(_treasury), listing.stakedBalance);\n        _treasury.releaseTokens(msgSender, listing.stakedBalance);\n\n        //Clear listing data and remove from tracking array\n        delete _listings[tendermintPublicKey];\n        removeListingKey(tendermintPublicKey);\n    }\n\n    //INTERNAL\n    function hasRewardPending(Listing storage l) internal view returns (bool) {\n        return (l.status == Status.ACCEPTED && l.rewardRate != 0 && l.lastRewardBlock + _rewardPeriod <= block.number);\n    }\n\n    function processRewards(Listing storage l) internal {\n        if(hasRewardPending(l)) {\n            uint rewardPeriods = block.number.sub(l.lastRewardBlock).div(_rewardPeriod);\n            if(l.rewardRate > 0) {\n                _token.mintTo(l.owner, uint(l.rewardRate).mul(rewardPeriods));\n            } else {\n                uint tokensToBurn = uint(l.rewardRate * -1).mul(rewardPeriods);\n                uint userTreasuryBalance = _treasury.currentBalance(l.owner);\n                if(userTreasuryBalance < tokensToBurn) {\n                    //Burn all the remaining tokens\n                    _treasury.burnFrom(l.owner, userTreasuryBalance);\n                    touchAndRemoveListing(l);\n                } else {\n                _treasury.burnFrom(l.owner, tokensToBurn);\n                }\n            }\n            //todo refactor to use\n            l.lastRewardBlock = l.lastRewardBlock.add(_rewardPeriod.mul(rewardPeriods));\n        }\n    }\n\n    function touchAndRemoveListing(Listing storage l) internal {\n        //Emit events to signal listing was to and removed, and voting power has been lost\n        emitValidatorTouchedAndRemoved(l);\n        emitValidatorRegistryUpdate(l.tendermintPublicKey, l.owner, 0);\n\n        //Approve and release tokens to treasury\n        _token.approve(address(_treasury), l.stakedBalance);\n        _treasury.releaseTokens(l.owner, l.stakedBalance);\n\n        //Clear listing data and remove from tracking array\n        delete _listings[l.tendermintPublicKey];\n        removeListingKey(l.tendermintPublicKey);\n    }\n\n    function removeListingKey(bytes32 key) internal {\n        //Removes the listing by key and shortens the array\n        for (uint i = 0; i < _listingKeys.length; i++) {\n            if (_listingKeys[i] == key) {\n                _listingKeys[i] = _listingKeys[_listingKeys.length - 1];\n                _listingKeys.length--;\n                break;\n            }\n        }\n    }\n\n    function emitValidatorRegistryUpdate(bytes32 tendermintPublicKey, address owner, uint stake) internal {\n        bytes32[] memory data = new bytes32[](3);\n        data[0] = tendermintPublicKey;\n        data[1] = bytes32(uint(owner));\n        data[2] = bytes32(stake);\n        e.emitEvent(\"ValidatorRegistryUpdate\", data);\n    }\n\n    function emitValidatorRegistered(uint applicationBlock, bytes32 tendermintPublicKey, address owner, int rewardRate) internal {\n        bytes32[] memory data = new bytes32[](4);\n        data[0] = tendermintPublicKey;\n        data[1] = bytes32(applicationBlock);\n        data[2] = bytes32(uint(owner));\n        data[3] = bytes32(rewardRate);\n        e.emitEvent(\"ValidatorRegistered\", data);\n    }\n\n    function emitValidatorTouchedAndRemoved(Listing storage l) internal {\n        bytes32[] memory data = new bytes32[](4);\n        data[0] = l.tendermintPublicKey;\n        data[2] = bytes32(uint(l.owner));\n        e.emitEvent(\"ValidatorTouchedAndRemoved\", data);\n    }\n\n    function emitValidatorChallenged(bytes32 tendermintPublicKey, address owner, address challenger, uint challengeId, uint pollId) internal {\n        bytes32[] memory data = new bytes32[](5);\n        data[0] = tendermintPublicKey;\n        data[1] = bytes32(uint(owner));\n        data[2] = bytes32(uint(challenger));\n        data[3] = bytes32(challengeId);\n        data[4] = bytes32(pollId);\n        e.emitEvent(\"ValidatorChallenged\", data);\n    }\n}\n",
  "sourcePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/validator/ValidatorRegistry.sol",
  "ast": {
    "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/validator/ValidatorRegistry.sol",
    "exportedSymbols": {
      "ValidatorRegistry": [
        3282
      ]
    },
    "id": 3283,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1735,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:12"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 1736,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 3905,
        "src": "25:59:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/event/EventEmitter.sol",
        "file": "../event/EventEmitter.sol",
        "id": 1737,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 141,
        "src": "85:35:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/treasury/Treasury.sol",
        "file": "../treasury/Treasury.sol",
        "id": 1738,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 1562,
        "src": "121:34:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/validator/IValidatorRegistry.sol",
        "file": "./IValidatorRegistry.sol",
        "id": 1739,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 1734,
        "src": "156:34:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/voting/Voting.sol",
        "file": "../voting/Voting.sol",
        "id": 1740,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 3777,
        "src": "191:30:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1741,
              "name": "IValidatorRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1733,
              "src": "305:18:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                "typeString": "contract IValidatorRegistry"
              }
            },
            "id": 1742,
            "nodeType": "InheritanceSpecifier",
            "src": "305:18:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1743,
              "name": "Authorizable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 102,
              "src": "325:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Authorizable_$102",
                "typeString": "contract Authorizable"
              }
            },
            "id": 1744,
            "nodeType": "InheritanceSpecifier",
            "src": "325:12:12"
          }
        ],
        "contractDependencies": [
          102,
          1733
        ],
        "contractKind": "contract",
        "documentation": "@title ValidatorRegistry\n@author Freydal",
        "fullyImplemented": true,
        "id": 3282,
        "linearizedBaseContracts": [
          3282,
          102,
          1733
        ],
        "name": "ValidatorRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1747,
            "libraryName": {
              "contractScope": null,
              "id": 1745,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3904,
              "src": "350:8:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$3904",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "344:24:12",
            "typeName": {
              "id": 1746,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "363:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 1750,
            "name": "_applicationPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "374:35:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1748,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "374:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "38",
              "id": 1749,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "408:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_8_by_1",
                "typeString": "int_const 8"
              },
              "value": "8"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1753,
            "name": "_commitPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "415:30:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1751,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "415:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 1752,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "444:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1756,
            "name": "_challengePeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "451:33:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1754,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "451:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "38",
              "id": 1755,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "483:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_8_by_1",
                "typeString": "int_const 8"
              },
              "value": "8"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1759,
            "name": "_exitPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "490:28:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1757,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "490:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 1758,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "517:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1762,
            "name": "_rewardPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "524:30:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1760,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "524:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 1761,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "553:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1765,
            "name": "_minimumBalance",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "560:38:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1763,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "560:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 1764,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "591:7:12",
              "subdenomination": "ether",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1768,
            "name": "_stakeholderCut",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "604:33:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1766,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "604:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3330",
              "id": 1767,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "635:2:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_30_by_1",
                "typeString": "int_const 30"
              },
              "value": "30"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1770,
            "name": "_treasury",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "690:26:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Treasury_$1561",
              "typeString": "contract Treasury"
            },
            "typeName": {
              "contractScope": null,
              "id": 1769,
              "name": "Treasury",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1561,
              "src": "690:8:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Treasury_$1561",
                "typeString": "contract Treasury"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1772,
            "name": "_voting",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "722:22:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Voting_$3776",
              "typeString": "contract Voting"
            },
            "typeName": {
              "contractScope": null,
              "id": 1771,
              "name": "Voting",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3776,
              "src": "722:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Voting_$3776",
                "typeString": "contract Voting"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1774,
            "name": "_token",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "750:24:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DigmToken_$712",
              "typeString": "contract DigmToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 1773,
              "name": "DigmToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 712,
              "src": "750:9:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DigmToken_$712",
                "typeString": "contract DigmToken"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1778,
            "name": "_listings",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "780:45:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
              "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing)"
            },
            "typeName": {
              "id": 1777,
              "keyType": {
                "id": 1775,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "788:7:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "780:27:12",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1776,
                "name": "Listing",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1590,
                "src": "799:7:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                  "typeString": "struct IValidatorRegistry.Listing"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1782,
            "name": "_challenges",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "831:46:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
              "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge)"
            },
            "typeName": {
              "id": 1781,
              "keyType": {
                "id": 1779,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "839:4:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "831:26:12",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
                "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1780,
                "name": "Challenge",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1607,
                "src": "847:9:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                  "typeString": "struct IValidatorRegistry.Challenge"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1785,
            "name": "nextChallenge",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "883:30:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1783,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "883:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 1784,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "912:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1788,
            "name": "_listingKeys",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "919:30:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 1786,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "919:7:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 1787,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "919:9:12",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1790,
            "name": "e",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "955:22:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EventEmitter_$140",
              "typeString": "contract EventEmitter"
            },
            "typeName": {
              "contractScope": null,
              "id": 1789,
              "name": "EventEmitter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 140,
              "src": "955:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventEmitter_$140",
                "typeString": "contract EventEmitter"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1828,
              "nodeType": "Block",
              "src": "1453:167:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1804,
                      "name": "_treasury",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1770,
                      "src": "1463:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Treasury_$1561",
                        "typeString": "contract Treasury"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1806,
                          "name": "_treasuryAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1792,
                          "src": "1484:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1805,
                        "name": "Treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1561,
                        "src": "1475:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Treasury_$1561_$",
                          "typeString": "type(contract Treasury)"
                        }
                      },
                      "id": 1807,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1475:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Treasury_$1561",
                        "typeString": "contract Treasury"
                      }
                    },
                    "src": "1463:38:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Treasury_$1561",
                      "typeString": "contract Treasury"
                    }
                  },
                  "id": 1809,
                  "nodeType": "ExpressionStatement",
                  "src": "1463:38:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1810,
                      "name": "_voting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1772,
                      "src": "1511:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Voting_$3776",
                        "typeString": "contract Voting"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1812,
                          "name": "_votingAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1794,
                          "src": "1528:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1811,
                        "name": "Voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3776,
                        "src": "1521:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Voting_$3776_$",
                          "typeString": "type(contract Voting)"
                        }
                      },
                      "id": 1813,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1521:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Voting_$3776",
                        "typeString": "contract Voting"
                      }
                    },
                    "src": "1511:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Voting_$3776",
                      "typeString": "contract Voting"
                    }
                  },
                  "id": 1815,
                  "nodeType": "ExpressionStatement",
                  "src": "1511:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1816,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1774,
                      "src": "1553:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DigmToken_$712",
                        "typeString": "contract DigmToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1817,
                          "name": "_treasury",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1770,
                          "src": "1562:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Treasury_$1561",
                            "typeString": "contract Treasury"
                          }
                        },
                        "id": 1818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "digm",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1056,
                        "src": "1562:14:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DigmToken_$712_$",
                          "typeString": "function () view external returns (contract DigmToken)"
                        }
                      },
                      "id": 1819,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1562:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DigmToken_$712",
                        "typeString": "contract DigmToken"
                      }
                    },
                    "src": "1553:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DigmToken_$712",
                      "typeString": "contract DigmToken"
                    }
                  },
                  "id": 1821,
                  "nodeType": "ExpressionStatement",
                  "src": "1553:25:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1822,
                      "name": "e",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1790,
                      "src": "1588:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventEmitter_$140",
                        "typeString": "contract EventEmitter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1824,
                          "name": "_events",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1798,
                          "src": "1605:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1823,
                        "name": "EventEmitter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 140,
                        "src": "1592:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EventEmitter_$140_$",
                          "typeString": "type(contract EventEmitter)"
                        }
                      },
                      "id": 1825,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1592:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventEmitter_$140",
                        "typeString": "contract EventEmitter"
                      }
                    },
                    "src": "1588:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventEmitter_$140",
                      "typeString": "contract EventEmitter"
                    }
                  },
                  "id": 1827,
                  "nodeType": "ExpressionStatement",
                  "src": "1588:25:12"
                }
              ]
            },
            "documentation": "@dev Create a new ValidatorRegistry implementation\n@notice Create a new ValidatorRegistry implementation\n@param _treasuryAddress Deployed Treasury address\n@param _votingAddress Deployed Voting address\n@param auth AuthorizedAddresses deployed address\n@param _events Deployed EventEmitter address",
            "id": 1829,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1801,
                    "name": "auth",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1796,
                    "src": "1440:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1802,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1800,
                  "name": "Authorizable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 102,
                  "src": "1427:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Authorizable_$102_$",
                    "typeString": "type(contract Authorizable)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1427:18:12"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1792,
                  "name": "_treasuryAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1346:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1791,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1346:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1794,
                  "name": "_votingAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1372:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1793,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1372:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1796,
                  "name": "auth",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1396:12:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1795,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1396:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1798,
                  "name": "_events",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1410:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1797,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1410:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1345:81:12"
            },
            "returnParameters": {
              "id": 1803,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1453:0:12"
            },
            "scope": 3282,
            "src": "1334:286:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1836,
              "nodeType": "Block",
              "src": "1850:42:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1834,
                    "name": "_applicationPeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1750,
                    "src": "1867:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1833,
                  "id": 1835,
                  "nodeType": "Return",
                  "src": "1860:25:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured applicationPeriod\n@notice Expose the configured applicationPeriod\n@return Application period length in blocks",
            "id": 1837,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "applicationPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1830,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1820:2:12"
            },
            "returnParameters": {
              "id": 1833,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1832,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1837,
                  "src": "1844:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1831,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1844:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1843:6:12"
            },
            "scope": 3282,
            "src": "1794:98:12",
            "stateMutability": "view",
            "superFunction": 1612,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1844,
              "nodeType": "Block",
              "src": "2102:37:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1842,
                    "name": "_commitPeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1753,
                    "src": "2119:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1841,
                  "id": 1843,
                  "nodeType": "Return",
                  "src": "2112:20:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured commitPeriod\n@notice Expose the configured commitPeriod\n@return Commit period length in blocks",
            "id": 1845,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "commitPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1838,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2072:2:12"
            },
            "returnParameters": {
              "id": 1841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1840,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1845,
                  "src": "2096:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1839,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2096:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2095:6:12"
            },
            "scope": 3282,
            "src": "2051:88:12",
            "stateMutability": "view",
            "superFunction": 1617,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1852,
              "nodeType": "Block",
              "src": "2361:40:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1850,
                    "name": "_challengePeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1756,
                    "src": "2378:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1849,
                  "id": 1851,
                  "nodeType": "Return",
                  "src": "2371:23:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured challengePeriod\n@notice Expose the configured challengePeriod\n@return Challenge period length in blocks",
            "id": 1853,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "challengePeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1846,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2331:2:12"
            },
            "returnParameters": {
              "id": 1849,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1848,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1853,
                  "src": "2355:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1847,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2355:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2354:6:12"
            },
            "scope": 3282,
            "src": "2307:94:12",
            "stateMutability": "view",
            "superFunction": 1622,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1860,
              "nodeType": "Block",
              "src": "2603:35:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1858,
                    "name": "_exitPeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1759,
                    "src": "2620:11:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1857,
                  "id": 1859,
                  "nodeType": "Return",
                  "src": "2613:18:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured exitPeriod\n@notice Expose the configured exitPeriod\n@return Exit period length in blocks",
            "id": 1861,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exitPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1854,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2573:2:12"
            },
            "returnParameters": {
              "id": 1857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1856,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1861,
                  "src": "2597:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1855,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2597:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2596:6:12"
            },
            "scope": 3282,
            "src": "2554:84:12",
            "stateMutability": "view",
            "superFunction": 1627,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1868,
              "nodeType": "Block",
              "src": "2848:37:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1866,
                    "name": "_rewardPeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1762,
                    "src": "2865:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1865,
                  "id": 1867,
                  "nodeType": "Return",
                  "src": "2858:20:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured rewardPeriod\n@notice Expose the configured rewardPeriod\n@return Reward period length in blocks",
            "id": 1869,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rewardPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1862,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2818:2:12"
            },
            "returnParameters": {
              "id": 1865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1864,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1869,
                  "src": "2842:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1863,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2842:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2841:6:12"
            },
            "scope": 3282,
            "src": "2797:88:12",
            "stateMutability": "view",
            "superFunction": 1632,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1876,
              "nodeType": "Block",
              "src": "3114:39:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1874,
                    "name": "_minimumBalance",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1765,
                    "src": "3131:15:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1873,
                  "id": 1875,
                  "nodeType": "Return",
                  "src": "3124:22:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured minimumBalance\n@notice Expose the configured minimumBalance\n@return Minimum token balance to list and challenge",
            "id": 1877,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "minimumBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1870,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3084:2:12"
            },
            "returnParameters": {
              "id": 1873,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1872,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1877,
                  "src": "3108:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1871,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3108:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3107:6:12"
            },
            "scope": 3282,
            "src": "3061:92:12",
            "stateMutability": "view",
            "superFunction": 1637,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1884,
              "nodeType": "Block",
              "src": "3394:39:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1882,
                    "name": "_stakeholderCut",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1768,
                    "src": "3411:15:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1881,
                  "id": 1883,
                  "nodeType": "Return",
                  "src": "3404:22:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured stakeholderCut\n@notice Expose the configured stakeholderCut\n@return Number of tokens the stakeholder gets after a challenge",
            "id": 1885,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stakeholderCut",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1878,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3364:2:12"
            },
            "returnParameters": {
              "id": 1881,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1880,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1885,
                  "src": "3388:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1879,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3388:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3387:6:12"
            },
            "scope": 3282,
            "src": "3341:92:12",
            "stateMutability": "view",
            "superFunction": 1642,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1894,
              "nodeType": "Block",
              "src": "3666:40:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1891,
                        "name": "_voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1772,
                        "src": "3691:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      ],
                      "id": 1890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3683:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 1892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3683:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1889,
                  "id": 1893,
                  "nodeType": "Return",
                  "src": "3676:23:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured Voting contract address\n@notice Expose the configured Voting contract address\n@return Configured Voting contract address",
            "id": 1895,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voting",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1886,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3633:2:12"
            },
            "returnParameters": {
              "id": 1889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1888,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1895,
                  "src": "3657:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1887,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3657:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3656:9:12"
            },
            "scope": 3282,
            "src": "3618:88:12",
            "stateMutability": "view",
            "superFunction": 1652,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1903,
              "nodeType": "Block",
              "src": "3939:36:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1901,
                    "name": "_listingKeys",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1788,
                    "src": "3956:12:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "functionReturnParameters": 1900,
                  "id": 1902,
                  "nodeType": "Return",
                  "src": "3949:19:12"
                }
              ]
            },
            "documentation": "@dev Expose the list of active validators\n@notice Expose the list of active validators\n@return An array of hex encoded tendermint keys",
            "id": 1904,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validators",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1896,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3897:2:12"
            },
            "returnParameters": {
              "id": 1900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1899,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1904,
                  "src": "3921:16:12",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1897,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3921:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 1898,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3921:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3920:18:12"
            },
            "scope": 3282,
            "src": "3878:97:12",
            "stateMutability": "view",
            "superFunction": 1663,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1913,
              "nodeType": "Block",
              "src": "4198:42:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1910,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "4223:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      ],
                      "id": 1909,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4215:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 1911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4215:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1908,
                  "id": 1912,
                  "nodeType": "Return",
                  "src": "4208:25:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured Treasury address\n@notice Expose the configured Treasury address\n@return Configured Treasury contract address",
            "id": 1914,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "treasury",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1905,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4165:2:12"
            },
            "returnParameters": {
              "id": 1908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1907,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1914,
                  "src": "4189:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1906,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4189:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4188:9:12"
            },
            "scope": 3282,
            "src": "4148:92:12",
            "stateMutability": "view",
            "superFunction": 1647,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1923,
              "nodeType": "Block",
              "src": "4447:39:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1920,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "4472:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      ],
                      "id": 1919,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4464:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 1921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4464:15:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1918,
                  "id": 1922,
                  "nodeType": "Return",
                  "src": "4457:22:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured DigmToken\n@notice Expose the configured DigmToken\n@return Configured DigmToken contract address",
            "id": 1924,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "token",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1915,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4414:2:12"
            },
            "returnParameters": {
              "id": 1918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1917,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1924,
                  "src": "4438:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4438:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4437:9:12"
            },
            "scope": 3282,
            "src": "4400:86:12",
            "stateMutability": "view",
            "superFunction": 1657,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1953,
              "nodeType": "Block",
              "src": "4763:218:12",
              "statements": [
                {
                  "assignments": [
                    1938
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1938,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "4829:22:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1937,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "4829:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1942,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1939,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "4854:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 1941,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1940,
                      "name": "pubKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1926,
                      "src": "4864:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4854:17:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4829:42:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1943,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1938,
                          "src": "4889:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                            "typeString": "struct IValidatorRegistry.Listing memory"
                          }
                        },
                        "id": 1944,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "status",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1571,
                        "src": "4889:14:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1945,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1938,
                          "src": "4905:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                            "typeString": "struct IValidatorRegistry.Listing memory"
                          }
                        },
                        "id": 1946,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "applicationBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1575,
                        "src": "4905:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1947,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1938,
                          "src": "4931:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                            "typeString": "struct IValidatorRegistry.Listing memory"
                          }
                        },
                        "id": 1948,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "4931:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1949,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1938,
                          "src": "4960:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                            "typeString": "struct IValidatorRegistry.Listing memory"
                          }
                        },
                        "id": 1950,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "4960:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 1951,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4888:86:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_Status_$1569_$_t_uint256_$_t_bytes32_$_t_address_$",
                      "typeString": "tuple(enum IValidatorRegistry.Status,uint256,bytes32,address)"
                    }
                  },
                  "functionReturnParameters": 1936,
                  "id": 1952,
                  "nodeType": "Return",
                  "src": "4881:93:12"
                }
              ]
            },
            "documentation": "@dev Expose listing data\n@notice Expose listing data\n@param pubKey Hex encoded tendermint public key",
            "id": 1954,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1927,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1926,
                  "name": "pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4644:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1925,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4643:16:12"
            },
            "returnParameters": {
              "id": 1936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1929,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4681:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Status_$1569",
                    "typeString": "enum IValidatorRegistry.Status"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1928,
                    "name": "Status",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1569,
                    "src": "4681:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1931,
                  "name": "applicationBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4696:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1930,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4696:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1933,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4719:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1932,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4719:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1935,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4748:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1934,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4748:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4680:82:12"
            },
            "scope": 3282,
            "src": "4624:357:12",
            "stateMutability": "view",
            "superFunction": 1676,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2048,
              "nodeType": "Block",
              "src": "5508:955:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1968,
                          "name": "tokensToStake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1960,
                          "src": "5599:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1969,
                          "name": "_minimumBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1765,
                          "src": "5616:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5599:32:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1967,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5591:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5591:41:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1972,
                  "nodeType": "ExpressionStatement",
                  "src": "5591:41:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1976,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1956,
                        "src": "5706:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1977,
                        "name": "tokensToStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1960,
                        "src": "5717:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1973,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "5684:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 1975,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1176,
                      "src": "5684:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5684:47:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1979,
                  "nodeType": "ExpressionStatement",
                  "src": "5684:47:12"
                },
                {
                  "assignments": [
                    1981
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1981,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2048,
                      "src": "5765:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1980,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "5765:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1985,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1982,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "5791:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 1984,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1983,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1958,
                      "src": "5801:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5791:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5765:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        },
                        "id": 1991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1987,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1981,
                            "src": "5889:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 1988,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1571,
                          "src": "5889:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1989,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1569,
                            "src": "5907:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                              "typeString": "type(enum IValidatorRegistry.Status)"
                            }
                          },
                          "id": 1990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "NULL",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5907:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "src": "5889:29:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1986,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5881:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5881:38:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1993,
                  "nodeType": "ExpressionStatement",
                  "src": "5881:38:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1994,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "5959:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 1996,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "5959:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1997,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "5976:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 1998,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PENDING",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5976:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "5959:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "id": 2000,
                  "nodeType": "ExpressionStatement",
                  "src": "5959:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2001,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6000:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2003,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "stakedBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1573,
                      "src": "6000:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2004,
                      "name": "tokensToStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1960,
                      "src": "6024:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6000:37:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2006,
                  "nodeType": "ExpressionStatement",
                  "src": "6000:37:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2007,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6047:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2009,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "applicationBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1575,
                      "src": "6047:24:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2010,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4559,
                        "src": "6074:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6074:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6047:39:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2013,
                  "nodeType": "ExpressionStatement",
                  "src": "6047:39:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2014,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6096:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2016,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tendermintPublicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1585,
                      "src": "6096:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2017,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1958,
                      "src": "6126:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6096:49:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2019,
                  "nodeType": "ExpressionStatement",
                  "src": "6096:49:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2020,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6155:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2022,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1587,
                      "src": "6155:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2023,
                      "name": "msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1956,
                      "src": "6171:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6155:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2025,
                  "nodeType": "ExpressionStatement",
                  "src": "6155:25:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2026,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6190:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2028,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "rewardRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1581,
                      "src": "6190:18:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2029,
                      "name": "rewardRate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1962,
                      "src": "6211:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "6190:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 2031,
                  "nodeType": "ExpressionStatement",
                  "src": "6190:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2035,
                        "name": "tendermintPublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1958,
                        "src": "6299:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2032,
                        "name": "_listingKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1788,
                        "src": "6281:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 2034,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6281:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) returns (uint256)"
                      }
                    },
                    "id": 2036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6281:38:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2037,
                  "nodeType": "ExpressionStatement",
                  "src": "6281:38:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2039,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1981,
                          "src": "6375:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2040,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "applicationBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1575,
                        "src": "6375:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2041,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1981,
                          "src": "6401:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2042,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "6401:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2043,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1981,
                          "src": "6430:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2044,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "6430:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2045,
                        "name": "rewardRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1962,
                        "src": "6445:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 2038,
                      "name": "emitValidatorRegistered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3167,
                      "src": "6351:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_address_$_t_int256_$returns$__$",
                        "typeString": "function (uint256,bytes32,address,int256)"
                      }
                    },
                    "id": 2046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6351:105:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2047,
                  "nodeType": "ExpressionStatement",
                  "src": "6351:105:12"
                }
              ]
            },
            "documentation": "@dev Register a listing\n@notice Register a listing\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key\n@param tokensToStake The number of tokes at stake if the order is challenged\n@param rewardRate The rate tokens are minted or destroyed over the active listings reward periods",
            "id": 2049,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1965,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1964,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "5495:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5495:12:12"
              }
            ],
            "name": "registerListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1956,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "5402:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1955,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5402:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1958,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "5421:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1957,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5421:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1960,
                  "name": "tokensToStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "5450:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1959,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5450:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1962,
                  "name": "rewardRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "5470:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 1961,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "5470:3:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5401:84:12"
            },
            "returnParameters": {
              "id": 1966,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5508:0:12"
            },
            "scope": 3282,
            "src": "5377:1086:12",
            "stateMutability": "nonpayable",
            "superFunction": 1687,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2183,
              "nodeType": "Block",
              "src": "6786:1457:12",
              "statements": [
                {
                  "assignments": [
                    2059
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2059,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2183,
                      "src": "6819:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2058,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "6819:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2063,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2060,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "6845:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2062,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2061,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "6855:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6845:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6819:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            },
                            "id": 2069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2065,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2059,
                                "src": "6981:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2066,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "status",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1571,
                              "src": "6981:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2067,
                                "name": "Status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1569,
                                "src": "6999:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                  "typeString": "type(enum IValidatorRegistry.Status)"
                                }
                              },
                              "id": 2068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PENDING",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6999:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "src": "6981:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            },
                            "id": 2074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2070,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2059,
                                "src": "7017:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2071,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "status",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1571,
                              "src": "7017:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2072,
                                "name": "Status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1569,
                                "src": "7035:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                  "typeString": "type(enum IValidatorRegistry.Status)"
                                }
                              },
                              "id": 2073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "ACCEPTED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7035:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "src": "7017:33:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6981:69:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          },
                          "id": 2080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2076,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2059,
                              "src": "7054:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2077,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "status",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1571,
                            "src": "7054:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2078,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1569,
                              "src": "7072:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                "typeString": "type(enum IValidatorRegistry.Status)"
                              }
                            },
                            "id": 2079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "EXITING",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7072:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            }
                          },
                          "src": "7054:32:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6981:105:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2064,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "6973:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6973:114:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2083,
                  "nodeType": "ExpressionStatement",
                  "src": "6973:114:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2085,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7289:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2084,
                      "name": "processRewards",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2964,
                      "src": "7274:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                      }
                    },
                    "id": 2086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7274:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2087,
                  "nodeType": "ExpressionStatement",
                  "src": "7274:23:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    },
                    "id": 2092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2088,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7310:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2089,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "7310:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2090,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "7328:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "NULL",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7328:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "7310:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2094,
                  "nodeType": "IfStatement",
                  "src": "7307:41:12",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 2057,
                    "id": 2093,
                    "nodeType": "Return",
                    "src": "7341:7:12"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2095,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7387:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2097,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "7387:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2098,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "7404:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CHALLENGED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7404:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "7387:34:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "id": 2101,
                  "nodeType": "ExpressionStatement",
                  "src": "7387:34:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2102,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7431:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2104,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentChallenge",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1589,
                      "src": "7431:24:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2105,
                      "name": "nextChallenge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1785,
                      "src": "7458:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7431:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2107,
                  "nodeType": "ExpressionStatement",
                  "src": "7431:40:12"
                },
                {
                  "assignments": [
                    2109
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2109,
                      "name": "challenge",
                      "nodeType": "VariableDeclaration",
                      "scope": 2183,
                      "src": "7509:27:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Challenge"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2108,
                        "name": "Challenge",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1607,
                        "src": "7509:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2113,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2110,
                      "name": "_challenges",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1782,
                      "src": "7539:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
                        "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge storage ref)"
                      }
                    },
                    "id": 2112,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2111,
                      "name": "nextChallenge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1785,
                      "src": "7551:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7539:26:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Challenge_$1607_storage",
                      "typeString": "struct IValidatorRegistry.Challenge storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7509:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "7575:15:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 2114,
                      "name": "nextChallenge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1785,
                      "src": "7575:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2116,
                  "nodeType": "ExpressionStatement",
                  "src": "7575:15:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2120,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2051,
                        "src": "7665:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2121,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2059,
                          "src": "7676:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2122,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "7676:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2117,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "7643:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 2119,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1176,
                      "src": "7643:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7643:55:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2124,
                  "nodeType": "ExpressionStatement",
                  "src": "7643:55:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2125,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7741:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2127,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "balance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1598,
                      "src": "7741:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2128,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7761:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2129,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakedBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1573,
                      "src": "7761:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7741:41:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2131,
                  "nodeType": "ExpressionStatement",
                  "src": "7741:41:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2132,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7792:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2134,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "challenger",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1594,
                      "src": "7792:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2135,
                      "name": "msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2051,
                      "src": "7815:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7792:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2137,
                  "nodeType": "ExpressionStatement",
                  "src": "7792:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2138,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7834:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2140,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "listingKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1592,
                      "src": "7834:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2141,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7857:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2142,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tendermintPublicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1585,
                      "src": "7857:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7834:50:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2144,
                  "nodeType": "ExpressionStatement",
                  "src": "7834:50:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2145,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7894:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2147,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "challengeEnd",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1602,
                      "src": "7894:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2151,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2148,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4559,
                          "src": "7919:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 2149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7919:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2150,
                        "name": "_challengePeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1756,
                        "src": "7934:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7919:31:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7894:56:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2153,
                  "nodeType": "ExpressionStatement",
                  "src": "7894:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2154,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7960:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2156,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pollId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1600,
                      "src": "7960:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2159,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "7998:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7998:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2161,
                            "name": "_commitPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1753,
                            "src": "8013:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7998:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2163,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "8028:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8028:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2165,
                            "name": "_challengePeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1756,
                            "src": "8043:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8028:31:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2157,
                          "name": "_voting",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1772,
                          "src": "7979:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Voting_$3776",
                            "typeString": "contract Voting"
                          }
                        },
                        "id": 2158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createPoll",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3449,
                        "src": "7979:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) external returns (uint256)"
                        }
                      },
                      "id": 2167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7979:81:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7960:100:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2169,
                  "nodeType": "ExpressionStatement",
                  "src": "7960:100:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2171,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2059,
                          "src": "8127:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2172,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "8127:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2173,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2059,
                          "src": "8156:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2174,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "8156:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2175,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2109,
                          "src": "8171:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2176,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "challenger",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1594,
                        "src": "8171:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2177,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2059,
                          "src": "8193:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2178,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currentChallenge",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1589,
                        "src": "8193:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2179,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2109,
                          "src": "8219:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2180,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pollId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1600,
                        "src": "8219:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2170,
                      "name": "emitValidatorChallenged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3281,
                      "src": "8103:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 2181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8103:133:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2182,
                  "nodeType": "ExpressionStatement",
                  "src": "8103:133:12"
                }
              ]
            },
            "documentation": "@dev Challenge a registered listing\n@notice Challenge a registered listing\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key",
            "id": 2184,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2056,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2055,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "6773:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6773:12:12"
              }
            ],
            "name": "challengeListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2051,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2184,
                  "src": "6718:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2050,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6718:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2053,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2184,
                  "src": "6737:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2052,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6737:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6717:48:12"
            },
            "returnParameters": {
              "id": 2057,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6786:0:12"
            },
            "scope": 3282,
            "src": "6692:1551:12",
            "stateMutability": "nonpayable",
            "superFunction": 1694,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2476,
              "nodeType": "Block",
              "src": "8430:3535:12",
              "statements": [
                {
                  "assignments": [
                    2190
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2190,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2476,
                      "src": "8463:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2189,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "8463:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2194,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2191,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "8489:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2193,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2192,
                      "name": "pubKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2186,
                      "src": "8499:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8489:17:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8463:43:12"
                },
                {
                  "assignments": [
                    2196
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2196,
                      "name": "challenge",
                      "nodeType": "VariableDeclaration",
                      "scope": 2476,
                      "src": "8516:27:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Challenge"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2195,
                        "name": "Challenge",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1607,
                        "src": "8516:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2201,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2197,
                      "name": "_challenges",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1782,
                      "src": "8546:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
                        "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge storage ref)"
                      }
                    },
                    "id": 2200,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2198,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2190,
                        "src": "8558:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentChallenge",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1589,
                      "src": "8558:24:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8546:37:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Challenge_$1607_storage",
                      "typeString": "struct IValidatorRegistry.Challenge storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8516:67:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        },
                        "id": 2207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2203,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2190,
                            "src": "8683:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2204,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1571,
                          "src": "8683:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2205,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1569,
                            "src": "8701:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                              "typeString": "type(enum IValidatorRegistry.Status)"
                            }
                          },
                          "id": 2206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "CHALLENGED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8701:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "src": "8683:35:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2202,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "8675:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8675:44:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2209,
                  "nodeType": "ExpressionStatement",
                  "src": "8675:44:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2211,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "8737:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 2212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8737:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2213,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2196,
                            "src": "8752:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2214,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "challengeEnd",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1602,
                          "src": "8752:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8737:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2210,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "8729:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8729:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2217,
                  "nodeType": "ExpressionStatement",
                  "src": "8729:46:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "8793:20:12",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2219,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2196,
                            "src": "8794:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2220,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "finalized",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1604,
                          "src": "8794:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2218,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "8785:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8785:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2223,
                  "nodeType": "ExpressionStatement",
                  "src": "8785:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2225,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2196,
                            "src": "8832:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2226,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1598,
                          "src": "8832:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2227,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2190,
                            "src": "8853:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2228,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakedBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1573,
                          "src": "8853:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8832:42:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2224,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "8824:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8824:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2231,
                  "nodeType": "ExpressionStatement",
                  "src": "8824:51:12"
                },
                {
                  "assignments": [
                    2233
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2233,
                      "name": "winningOption",
                      "nodeType": "VariableDeclaration",
                      "scope": 2476,
                      "src": "8886:18:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2232,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8886:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2239,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2236,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2196,
                          "src": "8929:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2237,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pollId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1600,
                        "src": "8929:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2234,
                        "name": "_voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1772,
                        "src": "8907:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      },
                      "id": 2235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3703,
                      "src": "8907:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 2238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8907:39:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8886:60:12"
                },
                {
                  "assignments": [
                    2241
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2241,
                      "name": "holderCut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2476,
                      "src": "8993:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2240,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8993:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2250,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 2248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9057:3:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2245,
                            "name": "_stakeholderCut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1768,
                            "src": "9036:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2242,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2190,
                              "src": "9010:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2243,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakedBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1573,
                            "src": "9010:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3811,
                          "src": "9010:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9010:42:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3835,
                      "src": "9010:46:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9010:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8993:68:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2251,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2196,
                        "src": "9071:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2253,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "voterTotal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1596,
                      "src": "9071:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2257,
                          "name": "holderCut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2241,
                          "src": "9120:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2254,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2190,
                            "src": "9094:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2255,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakedBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1573,
                          "src": "9094:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2256,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3859,
                        "src": "9094:25:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9094:36:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9071:59:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2260,
                  "nodeType": "ExpressionStatement",
                  "src": "9071:59:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2261,
                      "name": "winningOption",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2233,
                      "src": "9144:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9161:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9144:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2474,
                    "nodeType": "Block",
                    "src": "10341:1618:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2349,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "10355:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2351,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "passed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1606,
                            "src": "10355:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 2352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10374:5:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "10355:24:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2354,
                        "nodeType": "ExpressionStatement",
                        "src": "10355:24:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2355,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "10393:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2357,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "finalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1604,
                            "src": "10393:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10415:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "10393:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2360,
                        "nodeType": "ExpressionStatement",
                        "src": "10393:26:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2364,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "10510:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2365,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "challenger",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1594,
                              "src": "10510:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2366,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10532:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2367,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakedBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1573,
                              "src": "10532:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2361,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "10489:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "confiscate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1228,
                            "src": "10489:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10489:65:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2369,
                        "nodeType": "ExpressionStatement",
                        "src": "10489:65:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2370,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "10661:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2372,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "10661:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2376,
                                "name": "holderCut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2241,
                                "src": "10703:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2373,
                                  "name": "challenge",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2196,
                                  "src": "10681:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                  }
                                },
                                "id": 2374,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1598,
                                "src": "10681:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3859,
                              "src": "10681:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10681:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10661:52:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2379,
                        "nodeType": "ExpressionStatement",
                        "src": "10661:52:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2384,
                                  "name": "_treasury",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1770,
                                  "src": "10750:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                ],
                                "id": 2383,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10742:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10742:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2386,
                              "name": "holderCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "10762:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2380,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1774,
                              "src": "10727:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DigmToken_$712",
                                "typeString": "contract DigmToken"
                              }
                            },
                            "id": 2382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4125,
                            "src": "10727:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10727:45:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2388,
                        "nodeType": "ExpressionStatement",
                        "src": "10727:45:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2392,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10802:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2393,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1587,
                              "src": "10802:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2394,
                              "name": "holderCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "10817:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2389,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "10786:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "award",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1270,
                            "src": "10786:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10786:41:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2396,
                        "nodeType": "ExpressionStatement",
                        "src": "10786:41:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2397,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2190,
                              "src": "10885:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2398,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "exitBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1579,
                            "src": "10885:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10905:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10885:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2432,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "11492:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2433,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "confirmationBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1577,
                              "src": "11492:25:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11520:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "11492:29:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 2463,
                            "nodeType": "Block",
                            "src": "11686:149:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2450,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11743:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2452,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "status",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1571,
                                    "src": "11743:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Status_$1569",
                                      "typeString": "enum IValidatorRegistry.Status"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2453,
                                      "name": "Status",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1569,
                                      "src": "11760:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                        "typeString": "type(enum IValidatorRegistry.Status)"
                                      }
                                    },
                                    "id": 2454,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PENDING",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11760:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Status_$1569",
                                      "typeString": "enum IValidatorRegistry.Status"
                                    }
                                  },
                                  "src": "11743:31:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Status_$1569",
                                    "typeString": "enum IValidatorRegistry.Status"
                                  }
                                },
                                "id": 2456,
                                "nodeType": "ExpressionStatement",
                                "src": "11743:31:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2457,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11792:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2459,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "currentChallenge",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1589,
                                    "src": "11792:24:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2460,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11819:1:12",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "11792:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2462,
                                "nodeType": "ExpressionStatement",
                                "src": "11792:28:12"
                              }
                            ]
                          },
                          "id": 2464,
                          "nodeType": "IfStatement",
                          "src": "11489:346:12",
                          "trueBody": {
                            "id": 2449,
                            "nodeType": "Block",
                            "src": "11523:157:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2436,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11587:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2438,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "status",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1571,
                                    "src": "11587:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Status_$1569",
                                      "typeString": "enum IValidatorRegistry.Status"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2439,
                                      "name": "Status",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1569,
                                      "src": "11604:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                        "typeString": "type(enum IValidatorRegistry.Status)"
                                      }
                                    },
                                    "id": 2440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "ACCEPTED",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11604:15:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Status_$1569",
                                      "typeString": "enum IValidatorRegistry.Status"
                                    }
                                  },
                                  "src": "11587:32:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Status_$1569",
                                    "typeString": "enum IValidatorRegistry.Status"
                                  }
                                },
                                "id": 2442,
                                "nodeType": "ExpressionStatement",
                                "src": "11587:32:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2443,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11637:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2445,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "currentChallenge",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1589,
                                    "src": "11637:24:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2446,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11664:1:12",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "11637:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2448,
                                "nodeType": "ExpressionStatement",
                                "src": "11637:28:12"
                              }
                            ]
                          }
                        },
                        "id": 2465,
                        "nodeType": "IfStatement",
                        "src": "10882:953:12",
                        "trueBody": {
                          "id": 2431,
                          "nodeType": "Block",
                          "src": "10908:575:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2405,
                                        "name": "_treasury",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1770,
                                        "src": "11160:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_Treasury_$1561",
                                          "typeString": "contract Treasury"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Treasury_$1561",
                                          "typeString": "contract Treasury"
                                        }
                                      ],
                                      "id": 2404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11152:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 2406,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11152:18:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2407,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11172:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2408,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stakedBalance",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1573,
                                    "src": "11172:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2401,
                                    "name": "_token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1774,
                                    "src": "11137:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DigmToken_$712",
                                      "typeString": "contract DigmToken"
                                    }
                                  },
                                  "id": 2403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "approve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4125,
                                  "src": "11137:14:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 2409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11137:57:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2410,
                              "nodeType": "ExpressionStatement",
                              "src": "11137:57:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2414,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11236:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2415,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1587,
                                    "src": "11236:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2416,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11251:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2417,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stakedBalance",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1573,
                                    "src": "11251:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2411,
                                    "name": "_treasury",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1770,
                                    "src": "11212:9:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Treasury_$1561",
                                      "typeString": "contract Treasury"
                                    }
                                  },
                                  "id": 2413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "releaseTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1208,
                                  "src": "11212:23:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 2418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11212:61:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2419,
                              "nodeType": "ExpressionStatement",
                              "src": "11212:61:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2421,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11377:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2422,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tendermintPublicKey",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1585,
                                    "src": "11377:27:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 2420,
                                  "name": "removeListingKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3055,
                                  "src": "11360:16:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32)"
                                  }
                                },
                                "id": 2423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11360:45:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2424,
                              "nodeType": "ExpressionStatement",
                              "src": "11360:45:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "11423:45:12",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2425,
                                    "name": "_listings",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1778,
                                    "src": "11430:9:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                                      "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                                    }
                                  },
                                  "id": 2428,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2426,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11440:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2427,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tendermintPublicKey",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1585,
                                    "src": "11440:27:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "11430:38:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Listing_$1590_storage",
                                    "typeString": "struct IValidatorRegistry.Listing storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2430,
                              "nodeType": "ExpressionStatement",
                              "src": "11423:45:12"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2467,
                                  "name": "challenge",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2196,
                                  "src": "11906:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                  }
                                },
                                "id": 2468,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1598,
                                "src": "11906:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2469,
                                  "name": "challenge",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2196,
                                  "src": "11927:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                  }
                                },
                                "id": 2470,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "voterTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1596,
                                "src": "11927:20:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11906:41:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2466,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4572,
                              4573
                            ],
                            "referencedDeclaration": 4572,
                            "src": "11898:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 2472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11898:50:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2473,
                        "nodeType": "ExpressionStatement",
                        "src": "11898:50:12"
                      }
                    ]
                  },
                  "id": 2475,
                  "nodeType": "IfStatement",
                  "src": "9141:2818:12",
                  "trueBody": {
                    "id": 2348,
                    "nodeType": "Block",
                    "src": "9164:1171:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2264,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "9178:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2266,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "passed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1606,
                            "src": "9178:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9197:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "9178:23:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2269,
                        "nodeType": "ExpressionStatement",
                        "src": "9178:23:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2270,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "9215:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2272,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "finalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1604,
                            "src": "9215:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9237:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "9215:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2275,
                        "nodeType": "ExpressionStatement",
                        "src": "9215:26:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2279,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "9338:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2280,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1587,
                              "src": "9338:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2281,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "9353:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2282,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakedBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1573,
                              "src": "9353:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2276,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "9317:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "confiscate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1228,
                            "src": "9317:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9317:58:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2284,
                        "nodeType": "ExpressionStatement",
                        "src": "9317:58:12"
                      },
                      {
                        "assignments": [
                          2286
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2286,
                            "name": "challengerTotalWinnings",
                            "nodeType": "VariableDeclaration",
                            "scope": 2348,
                            "src": "9627:28:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2285,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "9627:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2292,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2290,
                              "name": "holderCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "9680:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2287,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "9658:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2288,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1598,
                              "src": "9658:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3883,
                            "src": "9658:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9658:32:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9627:63:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2297,
                                  "name": "_treasury",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1770,
                                  "src": "9727:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                ],
                                "id": 2296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9719:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9719:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2299,
                              "name": "challengerTotalWinnings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2286,
                              "src": "9739:23:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2293,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1774,
                              "src": "9704:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DigmToken_$712",
                                "typeString": "contract DigmToken"
                              }
                            },
                            "id": 2295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4125,
                            "src": "9704:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9704:59:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2301,
                        "nodeType": "ExpressionStatement",
                        "src": "9704:59:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2305,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "9908:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2306,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "challenger",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1594,
                              "src": "9908:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2307,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "9930:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2308,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1598,
                              "src": "9930:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2302,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "9884:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "releaseTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1208,
                            "src": "9884:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9884:64:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2310,
                        "nodeType": "ExpressionStatement",
                        "src": "9884:64:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2314,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "9978:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2315,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "challenger",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1594,
                              "src": "9978:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2316,
                              "name": "holderCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "10000:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2311,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "9962:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2313,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "award",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1270,
                            "src": "9962:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9962:48:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2318,
                        "nodeType": "ExpressionStatement",
                        "src": "9962:48:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2319,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "10024:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2321,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "10024:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2325,
                                "name": "holderCut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2241,
                                "src": "10066:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2322,
                                  "name": "challenge",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2196,
                                  "src": "10044:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                  }
                                },
                                "id": 2323,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1598,
                                "src": "10044:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3859,
                              "src": "10044:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2326,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10044:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10024:52:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2328,
                        "nodeType": "ExpressionStatement",
                        "src": "10024:52:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2330,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10159:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2331,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tendermintPublicKey",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1585,
                              "src": "10159:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2332,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10188:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2333,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1587,
                              "src": "10188:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10203:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2329,
                            "name": "emitValidatorRegistryUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3106,
                            "src": "10131:27:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256)"
                            }
                          },
                          "id": 2335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10131:74:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2336,
                        "nodeType": "ExpressionStatement",
                        "src": "10131:74:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2338,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10237:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2339,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tendermintPublicKey",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1585,
                              "src": "10237:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2337,
                            "name": "removeListingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3055,
                            "src": "10220:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10220:45:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2341,
                        "nodeType": "ExpressionStatement",
                        "src": "10220:45:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "10279:45:12",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2342,
                              "name": "_listings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1778,
                              "src": "10286:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                                "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                              }
                            },
                            "id": 2345,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2343,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10296:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2344,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tendermintPublicKey",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1585,
                              "src": "10296:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10286:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage",
                              "typeString": "struct IValidatorRegistry.Listing storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2347,
                        "nodeType": "ExpressionStatement",
                        "src": "10279:45:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Resolve a challenge\n@notice Resolve a challenge\n@param pubKey Hex encoded tendermint public key",
            "id": 2477,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "resolveChallenge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2186,
                  "name": "pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2477,
                  "src": "8407:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2185,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8407:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8406:16:12"
            },
            "returnParameters": {
              "id": 2188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8430:0:12"
            },
            "scope": 3282,
            "src": "8381:3584:12",
            "stateMutability": "nonpayable",
            "superFunction": 1711,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2569,
              "nodeType": "Block",
              "src": "12216:913:12",
              "statements": [
                {
                  "assignments": [
                    2487
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2487,
                      "name": "challenge",
                      "nodeType": "VariableDeclaration",
                      "scope": 2569,
                      "src": "12226:27:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Challenge"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2486,
                        "name": "Challenge",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1607,
                        "src": "12226:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2491,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2488,
                      "name": "_challenges",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1782,
                      "src": "12256:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
                        "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge storage ref)"
                      }
                    },
                    "id": 2490,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2489,
                      "name": "challengeId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2481,
                      "src": "12268:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12256:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Challenge_$1607_storage",
                      "typeString": "struct IValidatorRegistry.Challenge storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12226:54:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2493,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "12340:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 2494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12340:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2495,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2487,
                            "src": "12355:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2496,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "challengeEnd",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1602,
                          "src": "12355:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12340:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2492,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "12332:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12332:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2499,
                  "nodeType": "ExpressionStatement",
                  "src": "12332:46:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2502,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "12425:20:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2500,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2487,
                        "src": "12426:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2501,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "finalized",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1604,
                      "src": "12426:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2509,
                  "nodeType": "IfStatement",
                  "src": "12422:88:12",
                  "trueBody": {
                    "id": 2508,
                    "nodeType": "Block",
                    "src": "12447:63:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2504,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2487,
                                "src": "12478:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2505,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "listingKey",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1592,
                              "src": "12478:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2503,
                            "name": "resolveChallenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2477,
                            "src": "12461:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12461:38:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2507,
                        "nodeType": "ExpressionStatement",
                        "src": "12461:38:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2511,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2487,
                          "src": "12573:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2512,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "finalized",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1604,
                        "src": "12573:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2510,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "12565:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12565:28:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2514,
                  "nodeType": "ExpressionStatement",
                  "src": "12565:28:12"
                },
                {
                  "assignments": [
                    2516
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2516,
                      "name": "winningTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 2569,
                      "src": "12628:18:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2515,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12628:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2523,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2519,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2487,
                          "src": "12675:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2520,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pollId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1600,
                        "src": "12675:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2521,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2479,
                        "src": "12693:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2517,
                        "name": "_voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1772,
                        "src": "12649:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      },
                      "id": 2518,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userWinningTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3775,
                      "src": "12649:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address) view external returns (uint256)"
                      }
                    },
                    "id": 2522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12649:54:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12628:75:12"
                },
                {
                  "assignments": [
                    2525
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2525,
                      "name": "totalWinningTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 2569,
                      "src": "12713:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2524,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12713:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2531,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2528,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2487,
                          "src": "12766:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2529,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pollId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1600,
                        "src": "12766:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2526,
                        "name": "_voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1772,
                        "src": "12739:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      },
                      "id": 2527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalWinningTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3728,
                      "src": "12739:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 2530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12739:44:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12713:70:12"
                },
                {
                  "assignments": [
                    2533
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2533,
                      "name": "voterCut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2569,
                      "src": "12882:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2532,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12882:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2542,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2540,
                        "name": "totalWinningTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2525,
                        "src": "12942:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2537,
                            "name": "winningTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2516,
                            "src": "12923:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2534,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2487,
                              "src": "12898:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2535,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "voterTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1596,
                            "src": "12898:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3811,
                          "src": "12898:24:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2538,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12898:39:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3835,
                      "src": "12898:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12898:63:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12882:79:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2543,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2487,
                        "src": "12971:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2545,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "balance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1598,
                      "src": "12971:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2549,
                          "name": "voterCut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2533,
                          "src": "13013:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2546,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2487,
                            "src": "12991:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2547,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1598,
                          "src": "12991:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3859,
                        "src": "12991:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12991:31:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12971:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2552,
                  "nodeType": "ExpressionStatement",
                  "src": "12971:51:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2557,
                            "name": "_treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1770,
                            "src": "13055:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          ],
                          "id": 2556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13047:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13047:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2559,
                        "name": "voterCut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2533,
                        "src": "13067:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2553,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "13032:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      },
                      "id": 2555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4125,
                      "src": "13032:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13032:44:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2561,
                  "nodeType": "ExpressionStatement",
                  "src": "13032:44:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2565,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2479,
                        "src": "13102:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "voterCut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2533,
                        "src": "13113:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2562,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "13086:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 2564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "award",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1270,
                      "src": "13086:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13086:36:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2568,
                  "nodeType": "ExpressionStatement",
                  "src": "13086:36:12"
                }
              ]
            },
            "documentation": "@dev Claims winnings from a challenge\n@notice Claims winnings from a challenge\n@param challengeId Challenge id to claim rewards from.",
            "id": 2570,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2484,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2483,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "12203:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12203:12:12"
              }
            ],
            "name": "claimWinnings",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2479,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2570,
                  "src": "12159:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2478,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12159:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2481,
                  "name": "challengeId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2570,
                  "src": "12178:16:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2480,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "12178:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12158:37:12"
            },
            "returnParameters": {
              "id": 2485,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12216:0:12"
            },
            "scope": 3282,
            "src": "12136:993:12",
            "stateMutability": "nonpayable",
            "superFunction": 1701,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2585,
              "nodeType": "Block",
              "src": "13347:168:12",
              "statements": [
                {
                  "assignments": [
                    2576
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2576,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2585,
                      "src": "13380:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2575,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "13380:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2580,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2577,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "13406:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2579,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2578,
                      "name": "pubKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2572,
                      "src": "13416:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13406:17:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13380:43:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2582,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2576,
                        "src": "13500:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2581,
                      "name": "processRewards",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2964,
                      "src": "13485:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                      }
                    },
                    "id": 2583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13485:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2584,
                  "nodeType": "ExpressionStatement",
                  "src": "13485:23:12"
                }
              ]
            },
            "documentation": "@dev Claims rewards for a listing\n@notice Claims rewards for a listing\n@param pubKey Public key for the listing to have rewards claimed",
            "id": 2586,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "claimRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2572,
                  "name": "pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2586,
                  "src": "13324:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2571,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13324:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13323:16:12"
            },
            "returnParameters": {
              "id": 2574,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13347:0:12"
            },
            "scope": 3282,
            "src": "13302:213:12",
            "stateMutability": "nonpayable",
            "superFunction": 1706,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2675,
              "nodeType": "Block",
              "src": "13836:797:12",
              "statements": [
                {
                  "assignments": [
                    2596
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2596,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2675,
                      "src": "13869:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2595,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "13869:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2600,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2597,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "13895:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2599,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2598,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "13905:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13895:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13869:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2602,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2596,
                            "src": "14003:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2603,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1587,
                          "src": "14003:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2604,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2588,
                          "src": "14020:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "14003:26:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2601,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "13995:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13995:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2607,
                  "nodeType": "ExpressionStatement",
                  "src": "13995:35:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          },
                          "id": 2613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2609,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2596,
                              "src": "14048:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2610,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "status",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1571,
                            "src": "14048:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2611,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1569,
                              "src": "14066:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                "typeString": "type(enum IValidatorRegistry.Status)"
                              }
                            },
                            "id": 2612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PENDING",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14066:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            }
                          },
                          "src": "14048:32:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2617,
                                "name": "_applicationPeriod",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1750,
                                "src": "14113:18:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2614,
                                  "name": "listing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2596,
                                  "src": "14084:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                  }
                                },
                                "id": 2615,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "applicationBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1575,
                                "src": "14084:24:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3883,
                              "src": "14084:28:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14084:48:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2619,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "14136:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14136:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14084:64:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14048:100:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2608,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "14040:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14040:109:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2624,
                  "nodeType": "ExpressionStatement",
                  "src": "14040:109:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2625,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "14194:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2627,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "14194:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2628,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "14211:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "ACCEPTED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14211:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "14194:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "id": 2631,
                  "nodeType": "ExpressionStatement",
                  "src": "14194:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2632,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "14236:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2634,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "confirmationBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1577,
                      "src": "14236:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2635,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4559,
                        "src": "14264:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14264:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14236:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2638,
                  "nodeType": "ExpressionStatement",
                  "src": "14236:40:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 2642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2639,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "14289:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2640,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "rewardRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1581,
                      "src": "14289:18:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14310:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "14289:22:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2660,
                    "nodeType": "Block",
                    "src": "14398:63:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2653,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2596,
                              "src": "14412:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2655,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1583,
                            "src": "14412:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2656,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "14438:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14438:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14412:38:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2659,
                        "nodeType": "ExpressionStatement",
                        "src": "14412:38:12"
                      }
                    ]
                  },
                  "id": 2661,
                  "nodeType": "IfStatement",
                  "src": "14286:175:12",
                  "trueBody": {
                    "id": 2652,
                    "nodeType": "Block",
                    "src": "14313:79:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2643,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2596,
                              "src": "14327:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2645,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1583,
                            "src": "14327:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2646,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4559,
                                "src": "14353:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14353:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2648,
                              "name": "_rewardPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "14368:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14353:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14327:54:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2651,
                        "nodeType": "ExpressionStatement",
                        "src": "14327:54:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2663,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "14485:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2662,
                      "name": "processRewards",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2964,
                      "src": "14470:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                      }
                    },
                    "id": 2664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14470:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2665,
                  "nodeType": "ExpressionStatement",
                  "src": "14470:23:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2667,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2596,
                          "src": "14560:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2668,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "14560:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2669,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2596,
                          "src": "14589:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2670,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "14589:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2671,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2596,
                          "src": "14604:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2672,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "14604:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2666,
                      "name": "emitValidatorRegistryUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3106,
                      "src": "14532:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14532:94:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2674,
                  "nodeType": "ExpressionStatement",
                  "src": "14532:94:12"
                }
              ]
            },
            "documentation": "@dev Confirm a listing registration\n@notice Confirm a listing registration\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key",
            "id": 2676,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2593,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2592,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "13823:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13823:12:12"
              }
            ],
            "name": "confirmListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2588,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2676,
                  "src": "13768:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2587,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13768:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2590,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2676,
                  "src": "13787:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2589,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13787:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13767:48:12"
            },
            "returnParameters": {
              "id": 2594,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13836:0:12"
            },
            "scope": 3282,
            "src": "13744:889:12",
            "stateMutability": "nonpayable",
            "superFunction": 1718,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2765,
              "nodeType": "Block",
              "src": "14934:1000:12",
              "statements": [
                {
                  "assignments": [
                    2686
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2686,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2765,
                      "src": "14971:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2685,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "14971:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2690,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2687,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "14997:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2689,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2688,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2680,
                      "src": "15007:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14997:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14971:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2692,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2686,
                            "src": "15092:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2693,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1587,
                          "src": "15092:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2694,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2678,
                          "src": "15109:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "15092:26:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2691,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "15084:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15084:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2697,
                  "nodeType": "ExpressionStatement",
                  "src": "15084:35:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    },
                    "id": 2702,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2698,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2686,
                        "src": "15203:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2699,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "15203:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2700,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "15221:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2701,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PENDING",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15221:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "15203:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2732,
                  "nodeType": "IfStatement",
                  "src": "15200:431:12",
                  "trueBody": {
                    "id": 2731,
                    "nodeType": "Block",
                    "src": "15237:394:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2707,
                                  "name": "_treasury",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1770,
                                  "src": "15327:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                ],
                                "id": 2706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15319:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15319:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2709,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2686,
                                "src": "15339:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2710,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakedBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1573,
                              "src": "15339:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2703,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1774,
                              "src": "15304:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DigmToken_$712",
                                "typeString": "contract DigmToken"
                              }
                            },
                            "id": 2705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4125,
                            "src": "15304:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15304:57:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2712,
                        "nodeType": "ExpressionStatement",
                        "src": "15304:57:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2716,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2678,
                              "src": "15399:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2717,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2686,
                                "src": "15410:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2718,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakedBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1573,
                              "src": "15410:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2713,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "15375:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "releaseTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1208,
                            "src": "15375:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15375:57:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2720,
                        "nodeType": "ExpressionStatement",
                        "src": "15375:57:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "15511:37:12",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2721,
                              "name": "_listings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1778,
                              "src": "15518:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                                "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                              }
                            },
                            "id": 2723,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2722,
                              "name": "tendermintPublicKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2680,
                              "src": "15528:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15518:30:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage",
                              "typeString": "struct IValidatorRegistry.Listing storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2725,
                        "nodeType": "ExpressionStatement",
                        "src": "15511:37:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2727,
                              "name": "tendermintPublicKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2680,
                              "src": "15579:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2726,
                            "name": "removeListingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3055,
                            "src": "15562:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15562:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2729,
                        "nodeType": "ExpressionStatement",
                        "src": "15562:37:12"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 2684,
                        "id": 2730,
                        "nodeType": "Return",
                        "src": "15614:7:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        },
                        "id": 2738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2734,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2686,
                            "src": "15689:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2735,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1571,
                          "src": "15689:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2736,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1569,
                            "src": "15707:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                              "typeString": "type(enum IValidatorRegistry.Status)"
                            }
                          },
                          "id": 2737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "ACCEPTED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15707:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "src": "15689:33:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2733,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "15681:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15681:42:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2740,
                  "nodeType": "ExpressionStatement",
                  "src": "15681:42:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2746,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2741,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2686,
                        "src": "15734:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2743,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "15734:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2744,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "15751:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2745,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "EXITING",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15751:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "15734:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "id": 2747,
                  "nodeType": "ExpressionStatement",
                  "src": "15734:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2748,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2686,
                        "src": "15775:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2750,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "exitBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1579,
                      "src": "15775:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2754,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2751,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4559,
                          "src": "15795:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 2752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15795:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2753,
                        "name": "_exitPeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1759,
                        "src": "15810:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "15795:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15775:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2756,
                  "nodeType": "ExpressionStatement",
                  "src": "15775:46:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2758,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2686,
                          "src": "15881:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2759,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "15881:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2760,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2686,
                          "src": "15910:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2761,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "15910:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2762,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15925:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2757,
                      "name": "emitValidatorRegistryUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3106,
                      "src": "15853:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15853:74:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2764,
                  "nodeType": "ExpressionStatement",
                  "src": "15853:74:12"
                }
              ]
            },
            "documentation": "@dev Initiate a listing exit\n@notice Initiate a listing exit\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key",
            "id": 2766,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2683,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2682,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "14921:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14921:12:12"
              }
            ],
            "name": "initExit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2678,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2766,
                  "src": "14866:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2677,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14866:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2680,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2766,
                  "src": "14885:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2679,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14885:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14865:48:12"
            },
            "returnParameters": {
              "id": 2684,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14934:0:12"
            },
            "scope": 3282,
            "src": "14848:1086:12",
            "stateMutability": "nonpayable",
            "superFunction": 1725,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2831,
              "nodeType": "Block",
              "src": "16239:731:12",
              "statements": [
                {
                  "assignments": [
                    2776
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2776,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2831,
                      "src": "16276:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2775,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "16276:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2780,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2777,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "16302:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2779,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2778,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2770,
                      "src": "16312:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "16302:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16276:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2782,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2776,
                            "src": "16397:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2783,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1587,
                          "src": "16397:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2784,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2768,
                          "src": "16414:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "16397:26:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2781,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "16389:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16389:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2787,
                  "nodeType": "ExpressionStatement",
                  "src": "16389:35:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        },
                        "id": 2793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2789,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2776,
                            "src": "16539:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2790,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1571,
                          "src": "16539:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2791,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1569,
                            "src": "16557:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                              "typeString": "type(enum IValidatorRegistry.Status)"
                            }
                          },
                          "id": 2792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "EXITING",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16557:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "src": "16539:32:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2788,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "16531:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16531:41:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2795,
                  "nodeType": "ExpressionStatement",
                  "src": "16531:41:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2797,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2776,
                            "src": "16590:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2798,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exitBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1579,
                          "src": "16590:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2799,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "16611:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 2800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16611:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16590:33:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2796,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "16582:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16582:42:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2803,
                  "nodeType": "ExpressionStatement",
                  "src": "16582:42:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2808,
                            "name": "_treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1770,
                            "src": "16707:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          ],
                          "id": 2807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "16699:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2809,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16699:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2810,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2776,
                          "src": "16719:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2811,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "16719:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2804,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "16684:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      },
                      "id": 2806,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4125,
                      "src": "16684:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2812,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16684:57:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2813,
                  "nodeType": "ExpressionStatement",
                  "src": "16684:57:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2817,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2768,
                        "src": "16775:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2818,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2776,
                          "src": "16786:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2819,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "16786:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2814,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "16751:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 2816,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "releaseTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1208,
                      "src": "16751:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16751:57:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2821,
                  "nodeType": "ExpressionStatement",
                  "src": "16751:57:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2825,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "16879:37:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2822,
                        "name": "_listings",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1778,
                        "src": "16886:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                          "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                        }
                      },
                      "id": 2824,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2823,
                        "name": "tendermintPublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2770,
                        "src": "16896:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16886:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage",
                        "typeString": "struct IValidatorRegistry.Listing storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2826,
                  "nodeType": "ExpressionStatement",
                  "src": "16879:37:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2828,
                        "name": "tendermintPublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2770,
                        "src": "16943:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2827,
                      "name": "removeListingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3055,
                      "src": "16926:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16926:37:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2830,
                  "nodeType": "ExpressionStatement",
                  "src": "16926:37:12"
                }
              ]
            },
            "documentation": "@dev Complete a listing exit\n@notice Complete a listing exit\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key",
            "id": 2832,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2773,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2772,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "16226:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "16226:12:12"
              }
            ],
            "name": "finalizeExit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2771,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2768,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2832,
                  "src": "16171:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2767,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16171:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2770,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2832,
                  "src": "16190:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2769,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16190:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16170:48:12"
            },
            "returnParameters": {
              "id": 2774,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16239:0:12"
            },
            "scope": 3282,
            "src": "16149:821:12",
            "stateMutability": "nonpayable",
            "superFunction": 1732,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2859,
              "nodeType": "Block",
              "src": "17065:127:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            },
                            "id": 2843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2839,
                                "name": "l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2834,
                                "src": "17083:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2840,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "status",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1571,
                              "src": "17083:8:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2841,
                                "name": "Status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1569,
                                "src": "17095:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                  "typeString": "type(enum IValidatorRegistry.Status)"
                                }
                              },
                              "id": 2842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "ACCEPTED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17095:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "src": "17083:27:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 2847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2844,
                                "name": "l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2834,
                                "src": "17114:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2845,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rewardRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1581,
                              "src": "17114:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2846,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17130:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "17114:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "17083:48:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2849,
                                "name": "l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2834,
                                "src": "17135:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2850,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1583,
                              "src": "17135:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2851,
                              "name": "_rewardPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "17155:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17135:33:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2853,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "17172:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2854,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17172:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17135:49:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "17083:101:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2857,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "17082:103:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2838,
                  "id": 2858,
                  "nodeType": "Return",
                  "src": "17075:110:12"
                }
              ]
            },
            "documentation": null,
            "id": 2860,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasRewardPending",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2835,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2834,
                  "name": "l",
                  "nodeType": "VariableDeclaration",
                  "scope": 2860,
                  "src": "17017:17:12",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                    "typeString": "struct IValidatorRegistry.Listing"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2833,
                    "name": "Listing",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1590,
                    "src": "17017:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                      "typeString": "struct IValidatorRegistry.Listing"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17016:19:12"
            },
            "returnParameters": {
              "id": 2838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2837,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2860,
                  "src": "17059:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2836,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17059:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17058:6:12"
            },
            "scope": 3282,
            "src": "16991:201:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2963,
              "nodeType": "Block",
              "src": "17250:898:12",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2866,
                        "name": "l",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2862,
                        "src": "17280:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2865,
                      "name": "hasRewardPending",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2860,
                      "src": "17263:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Listing_$1590_storage_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer) view returns (bool)"
                      }
                    },
                    "id": 2867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17263:19:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2962,
                  "nodeType": "IfStatement",
                  "src": "17260:882:12",
                  "trueBody": {
                    "id": 2961,
                    "nodeType": "Block",
                    "src": "17284:858:12",
                    "statements": [
                      {
                        "assignments": [
                          2869
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2869,
                            "name": "rewardPeriods",
                            "nodeType": "VariableDeclaration",
                            "scope": 2961,
                            "src": "17298:18:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2868,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "17298:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2879,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2877,
                              "name": "_rewardPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "17359:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2873,
                                    "name": "l",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2862,
                                    "src": "17336:1:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                      "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                    }
                                  },
                                  "id": 2874,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastRewardBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1583,
                                  "src": "17336:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2870,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4559,
                                    "src": "17319:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 2871,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "17319:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3859,
                                "src": "17319:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17319:35:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3835,
                            "src": "17319:39:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17319:54:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17298:75:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 2883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2880,
                              "name": "l",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2862,
                              "src": "17390:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2881,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rewardRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1581,
                            "src": "17390:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17405:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17390:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2946,
                          "nodeType": "Block",
                          "src": "17508:500:12",
                          "statements": [
                            {
                              "assignments": [
                                2900
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2900,
                                  "name": "tokensToBurn",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2946,
                                  "src": "17526:17:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2899,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17526:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2911,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2909,
                                    "name": "rewardPeriods",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2869,
                                    "src": "17574:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 2906,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2902,
                                            "name": "l",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2862,
                                            "src": "17551:1:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                            }
                                          },
                                          "id": 2903,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "rewardRate",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1581,
                                          "src": "17551:12:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2905,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "-",
                                          "prefix": true,
                                          "src": "17566:2:12",
                                          "subExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 2904,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "17567:1:12",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_minus_1_by_1",
                                            "typeString": "int_const -1"
                                          }
                                        },
                                        "src": "17551:17:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "id": 2901,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17546:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 2907,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17546:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2908,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3811,
                                  "src": "17546:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17546:42:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17526:62:12"
                            },
                            {
                              "assignments": [
                                2913
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2913,
                                  "name": "userTreasuryBalance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2946,
                                  "src": "17606:24:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2912,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17606:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2919,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2916,
                                      "name": "l",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2862,
                                      "src": "17658:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2917,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1587,
                                    "src": "17658:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2914,
                                    "name": "_treasury",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1770,
                                    "src": "17633:9:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Treasury_$1561",
                                      "typeString": "contract Treasury"
                                    }
                                  },
                                  "id": 2915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1425,
                                  "src": "17633:24:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 2918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17633:33:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17606:60:12"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2920,
                                  "name": "userTreasuryBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2913,
                                  "src": "17687:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2921,
                                  "name": "tokensToBurn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2900,
                                  "src": "17709:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17687:34:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2944,
                                "nodeType": "Block",
                                "src": "17916:78:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2939,
                                            "name": "l",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2862,
                                            "src": "17953:1:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                            }
                                          },
                                          "id": 2940,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owner",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1587,
                                          "src": "17953:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2941,
                                          "name": "tokensToBurn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2900,
                                          "src": "17962:12:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2936,
                                          "name": "_treasury",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1770,
                                          "src": "17934:9:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Treasury_$1561",
                                            "typeString": "contract Treasury"
                                          }
                                        },
                                        "id": 2938,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "burnFrom",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1401,
                                        "src": "17934:18:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256) external"
                                        }
                                      },
                                      "id": 2942,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17934:41:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2943,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17934:41:12"
                                  }
                                ]
                              },
                              "id": 2945,
                              "nodeType": "IfStatement",
                              "src": "17684:310:12",
                              "trueBody": {
                                "id": 2935,
                                "nodeType": "Block",
                                "src": "17723:187:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2926,
                                            "name": "l",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2862,
                                            "src": "17816:1:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                            }
                                          },
                                          "id": 2927,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owner",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1587,
                                          "src": "17816:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2928,
                                          "name": "userTreasuryBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2913,
                                          "src": "17825:19:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2923,
                                          "name": "_treasury",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1770,
                                          "src": "17797:9:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Treasury_$1561",
                                            "typeString": "contract Treasury"
                                          }
                                        },
                                        "id": 2925,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "burnFrom",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1401,
                                        "src": "17797:18:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256) external"
                                        }
                                      },
                                      "id": 2929,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17797:48:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2930,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17797:48:12"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2932,
                                          "name": "l",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2862,
                                          "src": "17889:1:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                          }
                                        ],
                                        "id": 2931,
                                        "name": "touchAndRemoveListing",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3012,
                                        "src": "17867:21:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                                          "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                                        }
                                      },
                                      "id": 2933,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17867:24:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2934,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17867:24:12"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2947,
                        "nodeType": "IfStatement",
                        "src": "17387:621:12",
                        "trueBody": {
                          "id": 2898,
                          "nodeType": "Block",
                          "src": "17408:94:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2887,
                                      "name": "l",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2862,
                                      "src": "17440:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2888,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1587,
                                    "src": "17440:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2894,
                                        "name": "rewardPeriods",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2869,
                                        "src": "17472:13:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2890,
                                              "name": "l",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2862,
                                              "src": "17454:1:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                              }
                                            },
                                            "id": 2891,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "rewardRate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1581,
                                            "src": "17454:12:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "id": 2889,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "17449:4:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": "uint"
                                        },
                                        "id": 2892,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17449:18:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2893,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3811,
                                      "src": "17449:22:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2895,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17449:37:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2884,
                                    "name": "_token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1774,
                                    "src": "17426:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DigmToken_$712",
                                      "typeString": "contract DigmToken"
                                    }
                                  },
                                  "id": 2886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mintTo",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 711,
                                  "src": "17426:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 2896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17426:61:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2897,
                              "nodeType": "ExpressionStatement",
                              "src": "17426:61:12"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2948,
                              "name": "l",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2862,
                              "src": "18056:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2950,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1583,
                            "src": "18056:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2956,
                                    "name": "rewardPeriods",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2869,
                                    "src": "18116:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2954,
                                    "name": "_rewardPeriod",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1762,
                                    "src": "18098:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3811,
                                  "src": "18098:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18098:32:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2951,
                                  "name": "l",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2862,
                                  "src": "18076:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                  }
                                },
                                "id": 2952,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastRewardBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1583,
                                "src": "18076:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3883,
                              "src": "18076:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18076:55:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18056:75:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2960,
                        "nodeType": "ExpressionStatement",
                        "src": "18056:75:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2964,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "processRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "name": "l",
                  "nodeType": "VariableDeclaration",
                  "scope": 2964,
                  "src": "17222:17:12",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                    "typeString": "struct IValidatorRegistry.Listing"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2861,
                    "name": "Listing",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1590,
                    "src": "17222:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                      "typeString": "struct IValidatorRegistry.Listing"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17221:19:12"
            },
            "returnParameters": {
              "id": 2864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17250:0:12"
            },
            "scope": 3282,
            "src": "17198:950:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3011,
              "nodeType": "Block",
              "src": "18213:542:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2970,
                        "name": "l",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2966,
                        "src": "18345:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2969,
                      "name": "emitValidatorTouchedAndRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3208,
                      "src": "18314:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                      }
                    },
                    "id": 2971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18314:33:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2972,
                  "nodeType": "ExpressionStatement",
                  "src": "18314:33:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2974,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18385:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2975,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "18385:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2976,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18408:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2977,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "18408:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2978,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18417:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2973,
                      "name": "emitValidatorRegistryUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3106,
                      "src": "18357:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2979,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18357:62:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2980,
                  "nodeType": "ExpressionStatement",
                  "src": "18357:62:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2985,
                            "name": "_treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1770,
                            "src": "18502:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          ],
                          "id": 2984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "18494:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2986,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18494:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2987,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18514:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2988,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "18514:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2981,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "18479:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      },
                      "id": 2983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4125,
                      "src": "18479:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18479:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2990,
                  "nodeType": "ExpressionStatement",
                  "src": "18479:51:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2994,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18564:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2995,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "18564:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2996,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18573:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2997,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "18573:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2991,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "18540:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 2993,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "releaseTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1208,
                      "src": "18540:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18540:49:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2999,
                  "nodeType": "ExpressionStatement",
                  "src": "18540:49:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "18660:39:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3000,
                        "name": "_listings",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1778,
                        "src": "18667:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                          "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                        }
                      },
                      "id": 3003,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3001,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18677:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 3002,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "18677:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18667:32:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage",
                        "typeString": "struct IValidatorRegistry.Listing storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3005,
                  "nodeType": "ExpressionStatement",
                  "src": "18660:39:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3007,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18726:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 3008,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "18726:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3006,
                      "name": "removeListingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3055,
                      "src": "18709:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 3009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18709:39:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3010,
                  "nodeType": "ExpressionStatement",
                  "src": "18709:39:12"
                }
              ]
            },
            "documentation": null,
            "id": 3012,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "touchAndRemoveListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2966,
                  "name": "l",
                  "nodeType": "VariableDeclaration",
                  "scope": 3012,
                  "src": "18185:17:12",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                    "typeString": "struct IValidatorRegistry.Listing"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2965,
                    "name": "Listing",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1590,
                    "src": "18185:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                      "typeString": "struct IValidatorRegistry.Listing"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18184:19:12"
            },
            "returnParameters": {
              "id": 2968,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18213:0:12"
            },
            "scope": 3282,
            "src": "18154:601:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3054,
              "nodeType": "Block",
              "src": "18809:325:12",
              "statements": [
                {
                  "body": {
                    "id": 3052,
                    "nodeType": "Block",
                    "src": "18926:202:12",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3028,
                              "name": "_listingKeys",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1788,
                              "src": "18944:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 3030,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3029,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3018,
                              "src": "18957:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "18944:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3031,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3014,
                            "src": "18963:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "18944:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3051,
                        "nodeType": "IfStatement",
                        "src": "18940:178:12",
                        "trueBody": {
                          "id": 3050,
                          "nodeType": "Block",
                          "src": "18968:150:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3033,
                                    "name": "_listingKeys",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1788,
                                    "src": "18986:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 3035,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3034,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3018,
                                    "src": "18999:1:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18986:15:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3036,
                                    "name": "_listingKeys",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1788,
                                    "src": "19004:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 3041,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3040,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3037,
                                        "name": "_listingKeys",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1788,
                                        "src": "19017:12:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                          "typeString": "bytes32[] storage ref"
                                        }
                                      },
                                      "id": 3038,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "19017:19:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3039,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19039:1:12",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "19017:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19004:37:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "18986:55:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 3043,
                              "nodeType": "ExpressionStatement",
                              "src": "18986:55:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "19059:21:12",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3044,
                                    "name": "_listingKeys",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1788,
                                    "src": "19059:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 3046,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "19059:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3048,
                              "nodeType": "ExpressionStatement",
                              "src": "19059:21:12"
                            },
                            {
                              "id": 3049,
                              "nodeType": "Break",
                              "src": "19098:5:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3021,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3018,
                      "src": "18896:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3022,
                        "name": "_listingKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1788,
                        "src": "18900:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 3023,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18900:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18896:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3053,
                  "initializationExpression": {
                    "assignments": [
                      3018
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3018,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3053,
                        "src": "18884:6:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3017,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18884:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3020,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3019,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18893:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "18884:10:12"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3026,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "18921:3:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3025,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3018,
                        "src": "18921:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3027,
                    "nodeType": "ExpressionStatement",
                    "src": "18921:3:12"
                  },
                  "nodeType": "ForStatement",
                  "src": "18879:249:12"
                }
              ]
            },
            "documentation": null,
            "id": 3055,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeListingKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3015,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3014,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 3055,
                  "src": "18787:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3013,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18787:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18786:13:12"
            },
            "returnParameters": {
              "id": 3016,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18809:0:12"
            },
            "scope": 3282,
            "src": "18761:373:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3105,
              "nodeType": "Block",
              "src": "19242:224:12",
              "statements": [
                {
                  "assignments": [
                    3067
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3067,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3105,
                      "src": "19252:21:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3065,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19252:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3066,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19252:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3073,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 3071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19290:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "id": 3070,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19276:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3068,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19280:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3069,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19280:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19276:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19252:40:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3074,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "19302:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3076,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19307:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19302:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3077,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3057,
                      "src": "19312:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19302:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3079,
                  "nodeType": "ExpressionStatement",
                  "src": "19302:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3088,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3080,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "19341:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3082,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19346:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19341:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3085,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3059,
                              "src": "19364:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "19359:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19359:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19351:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3087,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19351:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19341:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3089,
                  "nodeType": "ExpressionStatement",
                  "src": "19341:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3090,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "19381:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3092,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3091,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19386:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19381:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3094,
                          "name": "stake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3061,
                          "src": "19399:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19391:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3095,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19391:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19381:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3097,
                  "nodeType": "ExpressionStatement",
                  "src": "19381:24:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696461746f725265676973747279557064617465",
                        "id": 3101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19427:25:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_27cc7677144d2ef085be3d4a4ab32ee67ffb66fd445d10bc58d59bbb687cb478",
                          "typeString": "literal_string \"ValidatorRegistryUpdate\""
                        },
                        "value": "ValidatorRegistryUpdate"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3102,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "19454:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_27cc7677144d2ef085be3d4a4ab32ee67ffb66fd445d10bc58d59bbb687cb478",
                          "typeString": "literal_string \"ValidatorRegistryUpdate\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3098,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "19415:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3100,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "19415:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19415:44:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3104,
                  "nodeType": "ExpressionStatement",
                  "src": "19415:44:12"
                }
              ]
            },
            "documentation": null,
            "id": 3106,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitValidatorRegistryUpdate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3057,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3106,
                  "src": "19177:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3056,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "19177:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3059,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3106,
                  "src": "19206:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3058,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19206:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3061,
                  "name": "stake",
                  "nodeType": "VariableDeclaration",
                  "scope": 3106,
                  "src": "19221:10:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3060,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19221:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19176:56:12"
            },
            "returnParameters": {
              "id": 3063,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19242:0:12"
            },
            "scope": 3282,
            "src": "19140:326:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3166,
              "nodeType": "Block",
              "src": "19597:270:12",
              "statements": [
                {
                  "assignments": [
                    3120
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3120,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3166,
                      "src": "19607:21:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3118,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19607:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3119,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19607:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3126,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19645:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 3123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19631:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3121,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19635:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3122,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19635:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19631:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19607:40:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3131,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3127,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19657:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3129,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19662:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19657:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3130,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3110,
                      "src": "19667:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19657:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3132,
                  "nodeType": "ExpressionStatement",
                  "src": "19657:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3133,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19696:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3135,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19701:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19696:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3137,
                          "name": "applicationBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3108,
                          "src": "19714:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19706:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3138,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19706:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19696:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3140,
                  "nodeType": "ExpressionStatement",
                  "src": "19696:35:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3141,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19741:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3143,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19746:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19741:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3146,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3112,
                              "src": "19764:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "19759:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19759:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19751:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3148,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19751:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19741:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3150,
                  "nodeType": "ExpressionStatement",
                  "src": "19741:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3157,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3151,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19781:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3153,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 3152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19786:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19781:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3155,
                          "name": "rewardRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3114,
                          "src": "19799:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 3154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19791:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3156,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19791:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19781:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3158,
                  "nodeType": "ExpressionStatement",
                  "src": "19781:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696461746f7252656769737465726564",
                        "id": 3162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19832:21:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_42d28feff7c695dcbe5e12444d75aea7d5cdfefed35de96c248880faf4d266fe",
                          "typeString": "literal_string \"ValidatorRegistered\""
                        },
                        "value": "ValidatorRegistered"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3163,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19855:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_42d28feff7c695dcbe5e12444d75aea7d5cdfefed35de96c248880faf4d266fe",
                          "typeString": "literal_string \"ValidatorRegistered\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3159,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "19820:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3161,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "19820:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19820:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3165,
                  "nodeType": "ExpressionStatement",
                  "src": "19820:40:12"
                }
              ]
            },
            "documentation": null,
            "id": 3167,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitValidatorRegistered",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3108,
                  "name": "applicationBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3167,
                  "src": "19505:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3107,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19505:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3110,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3167,
                  "src": "19528:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3109,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "19528:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3112,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3167,
                  "src": "19557:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3111,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19557:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3114,
                  "name": "rewardRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 3167,
                  "src": "19572:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3113,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "19572:3:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19504:83:12"
            },
            "returnParameters": {
              "id": 3116,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19597:0:12"
            },
            "scope": 3282,
            "src": "19472:395:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3207,
              "nodeType": "Block",
              "src": "19941:197:12",
              "statements": [
                {
                  "assignments": [
                    3175
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3175,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3207,
                      "src": "19951:21:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3173,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19951:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3174,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19951:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3181,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19989:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 3178,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19975:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3176,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19979:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3177,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19979:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19975:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19951:40:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3182,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3175,
                        "src": "20001:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3184,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20006:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20001:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3185,
                        "name": "l",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3169,
                        "src": "20011:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 3186,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tendermintPublicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1585,
                      "src": "20011:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20001:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3188,
                  "nodeType": "ExpressionStatement",
                  "src": "20001:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3189,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3175,
                        "src": "20042:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3191,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3190,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20047:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20042:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3194,
                                "name": "l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3169,
                                "src": "20065:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 3195,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1587,
                              "src": "20065:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20060:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20060:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3192,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20052:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20052:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20042:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3199,
                  "nodeType": "ExpressionStatement",
                  "src": "20042:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696461746f72546f7563686564416e6452656d6f766564",
                        "id": 3203,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20096:28:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7a5d765316d84d02c483683113bae99c08652a181e12e609262a7f3201817d48",
                          "typeString": "literal_string \"ValidatorTouchedAndRemoved\""
                        },
                        "value": "ValidatorTouchedAndRemoved"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3204,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3175,
                        "src": "20126:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_7a5d765316d84d02c483683113bae99c08652a181e12e609262a7f3201817d48",
                          "typeString": "literal_string \"ValidatorTouchedAndRemoved\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3200,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "20084:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "20084:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20084:47:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3206,
                  "nodeType": "ExpressionStatement",
                  "src": "20084:47:12"
                }
              ]
            },
            "documentation": null,
            "id": 3208,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitValidatorTouchedAndRemoved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3170,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3169,
                  "name": "l",
                  "nodeType": "VariableDeclaration",
                  "scope": 3208,
                  "src": "19913:17:12",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                    "typeString": "struct IValidatorRegistry.Listing"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3168,
                    "name": "Listing",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1590,
                    "src": "19913:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                      "typeString": "struct IValidatorRegistry.Listing"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19912:19:12"
            },
            "returnParameters": {
              "id": 3171,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19941:0:12"
            },
            "scope": 3282,
            "src": "19873:265:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3280,
              "nodeType": "Block",
              "src": "20281:306:12",
              "statements": [
                {
                  "assignments": [
                    3224
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3224,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3280,
                      "src": "20291:21:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3222,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "20291:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3223,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "20291:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3230,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "35",
                        "id": 3228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20329:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        "value": "5"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        }
                      ],
                      "id": 3227,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "20315:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3225,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "20319:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3226,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "20319:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3229,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20315:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20291:40:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3231,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20341:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3233,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20346:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20341:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3234,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3210,
                      "src": "20351:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20341:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3236,
                  "nodeType": "ExpressionStatement",
                  "src": "20341:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3237,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20380:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3239,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20385:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20380:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3242,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3212,
                              "src": "20403:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20398:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20398:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3240,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20390:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20390:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20380:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3246,
                  "nodeType": "ExpressionStatement",
                  "src": "20380:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3247,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20420:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3249,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20425:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20420:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3252,
                              "name": "challenger",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3214,
                              "src": "20443:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20438:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20438:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20430:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3254,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20430:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20420:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3256,
                  "nodeType": "ExpressionStatement",
                  "src": "20420:35:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3257,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20465:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3259,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 3258,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20470:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20465:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3261,
                          "name": "challengeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3216,
                          "src": "20483:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20475:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20475:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20465:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3264,
                  "nodeType": "ExpressionStatement",
                  "src": "20465:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3265,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20505:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3267,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20510:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20505:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3269,
                          "name": "pollId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3218,
                          "src": "20523:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20515:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20515:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20505:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3272,
                  "nodeType": "ExpressionStatement",
                  "src": "20505:25:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696461746f724368616c6c656e676564",
                        "id": 3276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20552:21:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3a1de4774600e406a24f452b440f726afeffdb9b402424fd9cb7959450987d80",
                          "typeString": "literal_string \"ValidatorChallenged\""
                        },
                        "value": "ValidatorChallenged"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3277,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20575:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_3a1de4774600e406a24f452b440f726afeffdb9b402424fd9cb7959450987d80",
                          "typeString": "literal_string \"ValidatorChallenged\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3273,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "20540:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "20540:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20540:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3279,
                  "nodeType": "ExpressionStatement",
                  "src": "20540:40:12"
                }
              ]
            },
            "documentation": null,
            "id": 3281,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitValidatorChallenged",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3210,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20177:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3209,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "20177:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3212,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20206:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3211,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20206:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3214,
                  "name": "challenger",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20221:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3213,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20221:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3216,
                  "name": "challengeId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20241:16:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3215,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20241:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3218,
                  "name": "pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20259:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3217,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20259:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20176:95:12"
            },
            "returnParameters": {
              "id": 3220,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20281:0:12"
            },
            "scope": 3282,
            "src": "20144:443:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 3283,
        "src": "275:20314:12"
      }
    ],
    "src": "0:20590:12"
  },
  "legacyAST": {
    "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/validator/ValidatorRegistry.sol",
    "exportedSymbols": {
      "ValidatorRegistry": [
        3282
      ]
    },
    "id": 3283,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1735,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:12"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 1736,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 3905,
        "src": "25:59:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/event/EventEmitter.sol",
        "file": "../event/EventEmitter.sol",
        "id": 1737,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 141,
        "src": "85:35:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/treasury/Treasury.sol",
        "file": "../treasury/Treasury.sol",
        "id": 1738,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 1562,
        "src": "121:34:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/validator/IValidatorRegistry.sol",
        "file": "./IValidatorRegistry.sol",
        "id": 1739,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 1734,
        "src": "156:34:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/voting/Voting.sol",
        "file": "../voting/Voting.sol",
        "id": 1740,
        "nodeType": "ImportDirective",
        "scope": 3283,
        "sourceUnit": 3777,
        "src": "191:30:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1741,
              "name": "IValidatorRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1733,
              "src": "305:18:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                "typeString": "contract IValidatorRegistry"
              }
            },
            "id": 1742,
            "nodeType": "InheritanceSpecifier",
            "src": "305:18:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1743,
              "name": "Authorizable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 102,
              "src": "325:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Authorizable_$102",
                "typeString": "contract Authorizable"
              }
            },
            "id": 1744,
            "nodeType": "InheritanceSpecifier",
            "src": "325:12:12"
          }
        ],
        "contractDependencies": [
          102,
          1733
        ],
        "contractKind": "contract",
        "documentation": "@title ValidatorRegistry\n@author Freydal",
        "fullyImplemented": true,
        "id": 3282,
        "linearizedBaseContracts": [
          3282,
          102,
          1733
        ],
        "name": "ValidatorRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1747,
            "libraryName": {
              "contractScope": null,
              "id": 1745,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3904,
              "src": "350:8:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$3904",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "344:24:12",
            "typeName": {
              "id": 1746,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "363:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 1750,
            "name": "_applicationPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "374:35:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1748,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "374:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "38",
              "id": 1749,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "408:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_8_by_1",
                "typeString": "int_const 8"
              },
              "value": "8"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1753,
            "name": "_commitPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "415:30:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1751,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "415:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 1752,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "444:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1756,
            "name": "_challengePeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "451:33:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1754,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "451:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "38",
              "id": 1755,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "483:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_8_by_1",
                "typeString": "int_const 8"
              },
              "value": "8"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1759,
            "name": "_exitPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "490:28:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1757,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "490:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 1758,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "517:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1762,
            "name": "_rewardPeriod",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "524:30:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1760,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "524:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 1761,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "553:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1765,
            "name": "_minimumBalance",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "560:38:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1763,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "560:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 1764,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "591:7:12",
              "subdenomination": "ether",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1768,
            "name": "_stakeholderCut",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "604:33:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1766,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "604:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3330",
              "id": 1767,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "635:2:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_30_by_1",
                "typeString": "int_const 30"
              },
              "value": "30"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1770,
            "name": "_treasury",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "690:26:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Treasury_$1561",
              "typeString": "contract Treasury"
            },
            "typeName": {
              "contractScope": null,
              "id": 1769,
              "name": "Treasury",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1561,
              "src": "690:8:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Treasury_$1561",
                "typeString": "contract Treasury"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1772,
            "name": "_voting",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "722:22:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Voting_$3776",
              "typeString": "contract Voting"
            },
            "typeName": {
              "contractScope": null,
              "id": 1771,
              "name": "Voting",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3776,
              "src": "722:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Voting_$3776",
                "typeString": "contract Voting"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1774,
            "name": "_token",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "750:24:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DigmToken_$712",
              "typeString": "contract DigmToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 1773,
              "name": "DigmToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 712,
              "src": "750:9:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DigmToken_$712",
                "typeString": "contract DigmToken"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1778,
            "name": "_listings",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "780:45:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
              "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing)"
            },
            "typeName": {
              "id": 1777,
              "keyType": {
                "id": 1775,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "788:7:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "780:27:12",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1776,
                "name": "Listing",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1590,
                "src": "799:7:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                  "typeString": "struct IValidatorRegistry.Listing"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1782,
            "name": "_challenges",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "831:46:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
              "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge)"
            },
            "typeName": {
              "id": 1781,
              "keyType": {
                "id": 1779,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "839:4:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "831:26:12",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
                "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge)"
              },
              "valueType": {
                "contractScope": null,
                "id": 1780,
                "name": "Challenge",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1607,
                "src": "847:9:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                  "typeString": "struct IValidatorRegistry.Challenge"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1785,
            "name": "nextChallenge",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "883:30:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1783,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "883:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 1784,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "912:1:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1788,
            "name": "_listingKeys",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "919:30:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
              "typeString": "bytes32[]"
            },
            "typeName": {
              "baseType": {
                "id": 1786,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "919:7:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "id": 1787,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "919:9:12",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                "typeString": "bytes32[]"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 1790,
            "name": "e",
            "nodeType": "VariableDeclaration",
            "scope": 3282,
            "src": "955:22:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_EventEmitter_$140",
              "typeString": "contract EventEmitter"
            },
            "typeName": {
              "contractScope": null,
              "id": 1789,
              "name": "EventEmitter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 140,
              "src": "955:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventEmitter_$140",
                "typeString": "contract EventEmitter"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1828,
              "nodeType": "Block",
              "src": "1453:167:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1804,
                      "name": "_treasury",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1770,
                      "src": "1463:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Treasury_$1561",
                        "typeString": "contract Treasury"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1806,
                          "name": "_treasuryAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1792,
                          "src": "1484:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1805,
                        "name": "Treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1561,
                        "src": "1475:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Treasury_$1561_$",
                          "typeString": "type(contract Treasury)"
                        }
                      },
                      "id": 1807,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1475:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Treasury_$1561",
                        "typeString": "contract Treasury"
                      }
                    },
                    "src": "1463:38:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Treasury_$1561",
                      "typeString": "contract Treasury"
                    }
                  },
                  "id": 1809,
                  "nodeType": "ExpressionStatement",
                  "src": "1463:38:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1810,
                      "name": "_voting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1772,
                      "src": "1511:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Voting_$3776",
                        "typeString": "contract Voting"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1812,
                          "name": "_votingAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1794,
                          "src": "1528:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1811,
                        "name": "Voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3776,
                        "src": "1521:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Voting_$3776_$",
                          "typeString": "type(contract Voting)"
                        }
                      },
                      "id": 1813,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1521:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Voting_$3776",
                        "typeString": "contract Voting"
                      }
                    },
                    "src": "1511:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Voting_$3776",
                      "typeString": "contract Voting"
                    }
                  },
                  "id": 1815,
                  "nodeType": "ExpressionStatement",
                  "src": "1511:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1816,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1774,
                      "src": "1553:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DigmToken_$712",
                        "typeString": "contract DigmToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1817,
                          "name": "_treasury",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1770,
                          "src": "1562:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Treasury_$1561",
                            "typeString": "contract Treasury"
                          }
                        },
                        "id": 1818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "digm",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1056,
                        "src": "1562:14:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DigmToken_$712_$",
                          "typeString": "function () view external returns (contract DigmToken)"
                        }
                      },
                      "id": 1819,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1562:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DigmToken_$712",
                        "typeString": "contract DigmToken"
                      }
                    },
                    "src": "1553:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DigmToken_$712",
                      "typeString": "contract DigmToken"
                    }
                  },
                  "id": 1821,
                  "nodeType": "ExpressionStatement",
                  "src": "1553:25:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1822,
                      "name": "e",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1790,
                      "src": "1588:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventEmitter_$140",
                        "typeString": "contract EventEmitter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1824,
                          "name": "_events",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1798,
                          "src": "1605:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 1823,
                        "name": "EventEmitter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 140,
                        "src": "1592:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_EventEmitter_$140_$",
                          "typeString": "type(contract EventEmitter)"
                        }
                      },
                      "id": 1825,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1592:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_EventEmitter_$140",
                        "typeString": "contract EventEmitter"
                      }
                    },
                    "src": "1588:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_EventEmitter_$140",
                      "typeString": "contract EventEmitter"
                    }
                  },
                  "id": 1827,
                  "nodeType": "ExpressionStatement",
                  "src": "1588:25:12"
                }
              ]
            },
            "documentation": "@dev Create a new ValidatorRegistry implementation\n@notice Create a new ValidatorRegistry implementation\n@param _treasuryAddress Deployed Treasury address\n@param _votingAddress Deployed Voting address\n@param auth AuthorizedAddresses deployed address\n@param _events Deployed EventEmitter address",
            "id": 1829,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 1801,
                    "name": "auth",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1796,
                    "src": "1440:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1802,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1800,
                  "name": "Authorizable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 102,
                  "src": "1427:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Authorizable_$102_$",
                    "typeString": "type(contract Authorizable)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1427:18:12"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1792,
                  "name": "_treasuryAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1346:24:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1791,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1346:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1794,
                  "name": "_votingAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1372:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1793,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1372:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1796,
                  "name": "auth",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1396:12:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1795,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1396:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1798,
                  "name": "_events",
                  "nodeType": "VariableDeclaration",
                  "scope": 1829,
                  "src": "1410:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1797,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1410:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1345:81:12"
            },
            "returnParameters": {
              "id": 1803,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1453:0:12"
            },
            "scope": 3282,
            "src": "1334:286:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1836,
              "nodeType": "Block",
              "src": "1850:42:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1834,
                    "name": "_applicationPeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1750,
                    "src": "1867:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1833,
                  "id": 1835,
                  "nodeType": "Return",
                  "src": "1860:25:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured applicationPeriod\n@notice Expose the configured applicationPeriod\n@return Application period length in blocks",
            "id": 1837,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "applicationPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1830,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1820:2:12"
            },
            "returnParameters": {
              "id": 1833,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1832,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1837,
                  "src": "1844:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1831,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1844:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1843:6:12"
            },
            "scope": 3282,
            "src": "1794:98:12",
            "stateMutability": "view",
            "superFunction": 1612,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1844,
              "nodeType": "Block",
              "src": "2102:37:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1842,
                    "name": "_commitPeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1753,
                    "src": "2119:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1841,
                  "id": 1843,
                  "nodeType": "Return",
                  "src": "2112:20:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured commitPeriod\n@notice Expose the configured commitPeriod\n@return Commit period length in blocks",
            "id": 1845,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "commitPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1838,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2072:2:12"
            },
            "returnParameters": {
              "id": 1841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1840,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1845,
                  "src": "2096:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1839,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2096:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2095:6:12"
            },
            "scope": 3282,
            "src": "2051:88:12",
            "stateMutability": "view",
            "superFunction": 1617,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1852,
              "nodeType": "Block",
              "src": "2361:40:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1850,
                    "name": "_challengePeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1756,
                    "src": "2378:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1849,
                  "id": 1851,
                  "nodeType": "Return",
                  "src": "2371:23:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured challengePeriod\n@notice Expose the configured challengePeriod\n@return Challenge period length in blocks",
            "id": 1853,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "challengePeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1846,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2331:2:12"
            },
            "returnParameters": {
              "id": 1849,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1848,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1853,
                  "src": "2355:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1847,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2355:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2354:6:12"
            },
            "scope": 3282,
            "src": "2307:94:12",
            "stateMutability": "view",
            "superFunction": 1622,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1860,
              "nodeType": "Block",
              "src": "2603:35:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1858,
                    "name": "_exitPeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1759,
                    "src": "2620:11:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1857,
                  "id": 1859,
                  "nodeType": "Return",
                  "src": "2613:18:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured exitPeriod\n@notice Expose the configured exitPeriod\n@return Exit period length in blocks",
            "id": 1861,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exitPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1854,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2573:2:12"
            },
            "returnParameters": {
              "id": 1857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1856,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1861,
                  "src": "2597:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1855,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2597:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2596:6:12"
            },
            "scope": 3282,
            "src": "2554:84:12",
            "stateMutability": "view",
            "superFunction": 1627,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1868,
              "nodeType": "Block",
              "src": "2848:37:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1866,
                    "name": "_rewardPeriod",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1762,
                    "src": "2865:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1865,
                  "id": 1867,
                  "nodeType": "Return",
                  "src": "2858:20:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured rewardPeriod\n@notice Expose the configured rewardPeriod\n@return Reward period length in blocks",
            "id": 1869,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rewardPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1862,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2818:2:12"
            },
            "returnParameters": {
              "id": 1865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1864,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1869,
                  "src": "2842:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1863,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2842:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2841:6:12"
            },
            "scope": 3282,
            "src": "2797:88:12",
            "stateMutability": "view",
            "superFunction": 1632,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1876,
              "nodeType": "Block",
              "src": "3114:39:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1874,
                    "name": "_minimumBalance",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1765,
                    "src": "3131:15:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1873,
                  "id": 1875,
                  "nodeType": "Return",
                  "src": "3124:22:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured minimumBalance\n@notice Expose the configured minimumBalance\n@return Minimum token balance to list and challenge",
            "id": 1877,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "minimumBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1870,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3084:2:12"
            },
            "returnParameters": {
              "id": 1873,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1872,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1877,
                  "src": "3108:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1871,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3108:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3107:6:12"
            },
            "scope": 3282,
            "src": "3061:92:12",
            "stateMutability": "view",
            "superFunction": 1637,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1884,
              "nodeType": "Block",
              "src": "3394:39:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1882,
                    "name": "_stakeholderCut",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1768,
                    "src": "3411:15:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1881,
                  "id": 1883,
                  "nodeType": "Return",
                  "src": "3404:22:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured stakeholderCut\n@notice Expose the configured stakeholderCut\n@return Number of tokens the stakeholder gets after a challenge",
            "id": 1885,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stakeholderCut",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1878,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3364:2:12"
            },
            "returnParameters": {
              "id": 1881,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1880,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1885,
                  "src": "3388:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1879,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3388:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3387:6:12"
            },
            "scope": 3282,
            "src": "3341:92:12",
            "stateMutability": "view",
            "superFunction": 1642,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1894,
              "nodeType": "Block",
              "src": "3666:40:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1891,
                        "name": "_voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1772,
                        "src": "3691:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      ],
                      "id": 1890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3683:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 1892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3683:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1889,
                  "id": 1893,
                  "nodeType": "Return",
                  "src": "3676:23:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured Voting contract address\n@notice Expose the configured Voting contract address\n@return Configured Voting contract address",
            "id": 1895,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voting",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1886,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3633:2:12"
            },
            "returnParameters": {
              "id": 1889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1888,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1895,
                  "src": "3657:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1887,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3657:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3656:9:12"
            },
            "scope": 3282,
            "src": "3618:88:12",
            "stateMutability": "view",
            "superFunction": 1652,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1903,
              "nodeType": "Block",
              "src": "3939:36:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1901,
                    "name": "_listingKeys",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1788,
                    "src": "3956:12:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "functionReturnParameters": 1900,
                  "id": 1902,
                  "nodeType": "Return",
                  "src": "3949:19:12"
                }
              ]
            },
            "documentation": "@dev Expose the list of active validators\n@notice Expose the list of active validators\n@return An array of hex encoded tendermint keys",
            "id": 1904,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validators",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1896,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3897:2:12"
            },
            "returnParameters": {
              "id": 1900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1899,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1904,
                  "src": "3921:16:12",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1897,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3921:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 1898,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3921:9:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3920:18:12"
            },
            "scope": 3282,
            "src": "3878:97:12",
            "stateMutability": "view",
            "superFunction": 1663,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1913,
              "nodeType": "Block",
              "src": "4198:42:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1910,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "4223:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      ],
                      "id": 1909,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4215:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 1911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4215:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1908,
                  "id": 1912,
                  "nodeType": "Return",
                  "src": "4208:25:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured Treasury address\n@notice Expose the configured Treasury address\n@return Configured Treasury contract address",
            "id": 1914,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "treasury",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1905,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4165:2:12"
            },
            "returnParameters": {
              "id": 1908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1907,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1914,
                  "src": "4189:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1906,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4189:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4188:9:12"
            },
            "scope": 3282,
            "src": "4148:92:12",
            "stateMutability": "view",
            "superFunction": 1647,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1923,
              "nodeType": "Block",
              "src": "4447:39:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1920,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "4472:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      ],
                      "id": 1919,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4464:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 1921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4464:15:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1918,
                  "id": 1922,
                  "nodeType": "Return",
                  "src": "4457:22:12"
                }
              ]
            },
            "documentation": "@dev Expose the configured DigmToken\n@notice Expose the configured DigmToken\n@return Configured DigmToken contract address",
            "id": 1924,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "token",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1915,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4414:2:12"
            },
            "returnParameters": {
              "id": 1918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1917,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1924,
                  "src": "4438:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4438:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4437:9:12"
            },
            "scope": 3282,
            "src": "4400:86:12",
            "stateMutability": "view",
            "superFunction": 1657,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1953,
              "nodeType": "Block",
              "src": "4763:218:12",
              "statements": [
                {
                  "assignments": [
                    1938
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1938,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "4829:22:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1937,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "4829:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1942,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1939,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "4854:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 1941,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1940,
                      "name": "pubKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1926,
                      "src": "4864:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4854:17:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4829:42:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1943,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1938,
                          "src": "4889:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                            "typeString": "struct IValidatorRegistry.Listing memory"
                          }
                        },
                        "id": 1944,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "status",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1571,
                        "src": "4889:14:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1945,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1938,
                          "src": "4905:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                            "typeString": "struct IValidatorRegistry.Listing memory"
                          }
                        },
                        "id": 1946,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "applicationBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1575,
                        "src": "4905:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1947,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1938,
                          "src": "4931:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                            "typeString": "struct IValidatorRegistry.Listing memory"
                          }
                        },
                        "id": 1948,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "4931:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1949,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1938,
                          "src": "4960:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_memory_ptr",
                            "typeString": "struct IValidatorRegistry.Listing memory"
                          }
                        },
                        "id": 1950,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "4960:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 1951,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4888:86:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_Status_$1569_$_t_uint256_$_t_bytes32_$_t_address_$",
                      "typeString": "tuple(enum IValidatorRegistry.Status,uint256,bytes32,address)"
                    }
                  },
                  "functionReturnParameters": 1936,
                  "id": 1952,
                  "nodeType": "Return",
                  "src": "4881:93:12"
                }
              ]
            },
            "documentation": "@dev Expose listing data\n@notice Expose listing data\n@param pubKey Hex encoded tendermint public key",
            "id": 1954,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1927,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1926,
                  "name": "pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4644:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1925,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4643:16:12"
            },
            "returnParameters": {
              "id": 1936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1929,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4681:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Status_$1569",
                    "typeString": "enum IValidatorRegistry.Status"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1928,
                    "name": "Status",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1569,
                    "src": "4681:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1931,
                  "name": "applicationBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4696:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1930,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4696:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1933,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4719:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1932,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4719:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1935,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "4748:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1934,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4748:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4680:82:12"
            },
            "scope": 3282,
            "src": "4624:357:12",
            "stateMutability": "view",
            "superFunction": 1676,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2048,
              "nodeType": "Block",
              "src": "5508:955:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1968,
                          "name": "tokensToStake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1960,
                          "src": "5599:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1969,
                          "name": "_minimumBalance",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1765,
                          "src": "5616:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5599:32:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1967,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5591:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5591:41:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1972,
                  "nodeType": "ExpressionStatement",
                  "src": "5591:41:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1976,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1956,
                        "src": "5706:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1977,
                        "name": "tokensToStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1960,
                        "src": "5717:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1973,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "5684:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 1975,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1176,
                      "src": "5684:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 1978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5684:47:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1979,
                  "nodeType": "ExpressionStatement",
                  "src": "5684:47:12"
                },
                {
                  "assignments": [
                    1981
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1981,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2048,
                      "src": "5765:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1980,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "5765:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1985,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1982,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "5791:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 1984,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1983,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1958,
                      "src": "5801:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5791:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5765:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        },
                        "id": 1991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1987,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1981,
                            "src": "5889:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 1988,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1571,
                          "src": "5889:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1989,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1569,
                            "src": "5907:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                              "typeString": "type(enum IValidatorRegistry.Status)"
                            }
                          },
                          "id": 1990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "NULL",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5907:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "src": "5889:29:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1986,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "5881:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5881:38:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1993,
                  "nodeType": "ExpressionStatement",
                  "src": "5881:38:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1994,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "5959:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 1996,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "5959:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1997,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "5976:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 1998,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PENDING",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5976:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "5959:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "id": 2000,
                  "nodeType": "ExpressionStatement",
                  "src": "5959:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2001,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6000:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2003,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "stakedBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1573,
                      "src": "6000:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2004,
                      "name": "tokensToStake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1960,
                      "src": "6024:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6000:37:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2006,
                  "nodeType": "ExpressionStatement",
                  "src": "6000:37:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2007,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6047:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2009,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "applicationBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1575,
                      "src": "6047:24:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2010,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4559,
                        "src": "6074:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6074:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6047:39:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2013,
                  "nodeType": "ExpressionStatement",
                  "src": "6047:39:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2014,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6096:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2016,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tendermintPublicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1585,
                      "src": "6096:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2017,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1958,
                      "src": "6126:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6096:49:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2019,
                  "nodeType": "ExpressionStatement",
                  "src": "6096:49:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2020,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6155:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2022,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1587,
                      "src": "6155:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2023,
                      "name": "msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1956,
                      "src": "6171:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6155:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2025,
                  "nodeType": "ExpressionStatement",
                  "src": "6155:25:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2026,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1981,
                        "src": "6190:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2028,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "rewardRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1581,
                      "src": "6190:18:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2029,
                      "name": "rewardRate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1962,
                      "src": "6211:10:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "6190:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 2031,
                  "nodeType": "ExpressionStatement",
                  "src": "6190:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2035,
                        "name": "tendermintPublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1958,
                        "src": "6299:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2032,
                        "name": "_listingKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1788,
                        "src": "6281:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 2034,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6281:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) returns (uint256)"
                      }
                    },
                    "id": 2036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6281:38:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2037,
                  "nodeType": "ExpressionStatement",
                  "src": "6281:38:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2039,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1981,
                          "src": "6375:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2040,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "applicationBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1575,
                        "src": "6375:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2041,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1981,
                          "src": "6401:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2042,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "6401:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2043,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1981,
                          "src": "6430:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2044,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "6430:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2045,
                        "name": "rewardRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1962,
                        "src": "6445:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "id": 2038,
                      "name": "emitValidatorRegistered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3167,
                      "src": "6351:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_address_$_t_int256_$returns$__$",
                        "typeString": "function (uint256,bytes32,address,int256)"
                      }
                    },
                    "id": 2046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6351:105:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2047,
                  "nodeType": "ExpressionStatement",
                  "src": "6351:105:12"
                }
              ]
            },
            "documentation": "@dev Register a listing\n@notice Register a listing\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key\n@param tokensToStake The number of tokes at stake if the order is challenged\n@param rewardRate The rate tokens are minted or destroyed over the active listings reward periods",
            "id": 2049,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 1965,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1964,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "5495:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5495:12:12"
              }
            ],
            "name": "registerListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1956,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "5402:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1955,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5402:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1958,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "5421:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1957,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5421:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1960,
                  "name": "tokensToStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "5450:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1959,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5450:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1962,
                  "name": "rewardRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "5470:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 1961,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "5470:3:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5401:84:12"
            },
            "returnParameters": {
              "id": 1966,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5508:0:12"
            },
            "scope": 3282,
            "src": "5377:1086:12",
            "stateMutability": "nonpayable",
            "superFunction": 1687,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2183,
              "nodeType": "Block",
              "src": "6786:1457:12",
              "statements": [
                {
                  "assignments": [
                    2059
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2059,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2183,
                      "src": "6819:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2058,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "6819:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2063,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2060,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "6845:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2062,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2061,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2053,
                      "src": "6855:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6845:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6819:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            },
                            "id": 2069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2065,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2059,
                                "src": "6981:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2066,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "status",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1571,
                              "src": "6981:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2067,
                                "name": "Status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1569,
                                "src": "6999:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                  "typeString": "type(enum IValidatorRegistry.Status)"
                                }
                              },
                              "id": 2068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PENDING",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6999:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "src": "6981:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            },
                            "id": 2074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2070,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2059,
                                "src": "7017:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2071,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "status",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1571,
                              "src": "7017:14:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2072,
                                "name": "Status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1569,
                                "src": "7035:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                  "typeString": "type(enum IValidatorRegistry.Status)"
                                }
                              },
                              "id": 2073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "ACCEPTED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7035:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "src": "7017:33:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6981:69:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          },
                          "id": 2080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2076,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2059,
                              "src": "7054:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2077,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "status",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1571,
                            "src": "7054:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2078,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1569,
                              "src": "7072:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                "typeString": "type(enum IValidatorRegistry.Status)"
                              }
                            },
                            "id": 2079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "EXITING",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7072:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            }
                          },
                          "src": "7054:32:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6981:105:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2064,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "6973:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6973:114:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2083,
                  "nodeType": "ExpressionStatement",
                  "src": "6973:114:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2085,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7289:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2084,
                      "name": "processRewards",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2964,
                      "src": "7274:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                      }
                    },
                    "id": 2086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7274:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2087,
                  "nodeType": "ExpressionStatement",
                  "src": "7274:23:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    },
                    "id": 2092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2088,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7310:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2089,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "7310:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2090,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "7328:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "NULL",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7328:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "7310:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2094,
                  "nodeType": "IfStatement",
                  "src": "7307:41:12",
                  "trueBody": {
                    "expression": null,
                    "functionReturnParameters": 2057,
                    "id": 2093,
                    "nodeType": "Return",
                    "src": "7341:7:12"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2095,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7387:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2097,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "7387:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2098,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "7404:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "CHALLENGED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7404:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "7387:34:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "id": 2101,
                  "nodeType": "ExpressionStatement",
                  "src": "7387:34:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2102,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7431:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2104,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentChallenge",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1589,
                      "src": "7431:24:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2105,
                      "name": "nextChallenge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1785,
                      "src": "7458:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7431:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2107,
                  "nodeType": "ExpressionStatement",
                  "src": "7431:40:12"
                },
                {
                  "assignments": [
                    2109
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2109,
                      "name": "challenge",
                      "nodeType": "VariableDeclaration",
                      "scope": 2183,
                      "src": "7509:27:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Challenge"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2108,
                        "name": "Challenge",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1607,
                        "src": "7509:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2113,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2110,
                      "name": "_challenges",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1782,
                      "src": "7539:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
                        "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge storage ref)"
                      }
                    },
                    "id": 2112,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2111,
                      "name": "nextChallenge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1785,
                      "src": "7551:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7539:26:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Challenge_$1607_storage",
                      "typeString": "struct IValidatorRegistry.Challenge storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7509:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "7575:15:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 2114,
                      "name": "nextChallenge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1785,
                      "src": "7575:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2116,
                  "nodeType": "ExpressionStatement",
                  "src": "7575:15:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2120,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2051,
                        "src": "7665:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2121,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2059,
                          "src": "7676:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2122,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "7676:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2117,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "7643:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 2119,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1176,
                      "src": "7643:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7643:55:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2124,
                  "nodeType": "ExpressionStatement",
                  "src": "7643:55:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2125,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7741:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2127,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "balance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1598,
                      "src": "7741:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2128,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7761:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2129,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakedBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1573,
                      "src": "7761:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7741:41:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2131,
                  "nodeType": "ExpressionStatement",
                  "src": "7741:41:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2132,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7792:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2134,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "challenger",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1594,
                      "src": "7792:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2135,
                      "name": "msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2051,
                      "src": "7815:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7792:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2137,
                  "nodeType": "ExpressionStatement",
                  "src": "7792:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2138,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7834:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2140,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "listingKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1592,
                      "src": "7834:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2141,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "7857:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2142,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tendermintPublicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1585,
                      "src": "7857:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "7834:50:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2144,
                  "nodeType": "ExpressionStatement",
                  "src": "7834:50:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2145,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7894:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2147,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "challengeEnd",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1602,
                      "src": "7894:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2151,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2148,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4559,
                          "src": "7919:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 2149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7919:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2150,
                        "name": "_challengePeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1756,
                        "src": "7934:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "7919:31:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7894:56:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2153,
                  "nodeType": "ExpressionStatement",
                  "src": "7894:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2154,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2109,
                        "src": "7960:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2156,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pollId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1600,
                      "src": "7960:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2159,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "7998:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7998:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2161,
                            "name": "_commitPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1753,
                            "src": "8013:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7998:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2163,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "8028:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8028:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2165,
                            "name": "_challengePeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1756,
                            "src": "8043:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8028:31:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2157,
                          "name": "_voting",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1772,
                          "src": "7979:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Voting_$3776",
                            "typeString": "contract Voting"
                          }
                        },
                        "id": 2158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createPoll",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3449,
                        "src": "7979:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) external returns (uint256)"
                        }
                      },
                      "id": 2167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7979:81:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7960:100:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2169,
                  "nodeType": "ExpressionStatement",
                  "src": "7960:100:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2171,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2059,
                          "src": "8127:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2172,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "8127:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2173,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2059,
                          "src": "8156:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2174,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "8156:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2175,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2109,
                          "src": "8171:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2176,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "challenger",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1594,
                        "src": "8171:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2177,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2059,
                          "src": "8193:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2178,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "currentChallenge",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1589,
                        "src": "8193:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2179,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2109,
                          "src": "8219:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2180,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pollId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1600,
                        "src": "8219:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2170,
                      "name": "emitValidatorChallenged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3281,
                      "src": "8103:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 2181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8103:133:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2182,
                  "nodeType": "ExpressionStatement",
                  "src": "8103:133:12"
                }
              ]
            },
            "documentation": "@dev Challenge a registered listing\n@notice Challenge a registered listing\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key",
            "id": 2184,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2056,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2055,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "6773:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6773:12:12"
              }
            ],
            "name": "challengeListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2051,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2184,
                  "src": "6718:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2050,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6718:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2053,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2184,
                  "src": "6737:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2052,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6737:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6717:48:12"
            },
            "returnParameters": {
              "id": 2057,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6786:0:12"
            },
            "scope": 3282,
            "src": "6692:1551:12",
            "stateMutability": "nonpayable",
            "superFunction": 1694,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2476,
              "nodeType": "Block",
              "src": "8430:3535:12",
              "statements": [
                {
                  "assignments": [
                    2190
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2190,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2476,
                      "src": "8463:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2189,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "8463:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2194,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2191,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "8489:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2193,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2192,
                      "name": "pubKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2186,
                      "src": "8499:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8489:17:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8463:43:12"
                },
                {
                  "assignments": [
                    2196
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2196,
                      "name": "challenge",
                      "nodeType": "VariableDeclaration",
                      "scope": 2476,
                      "src": "8516:27:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Challenge"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2195,
                        "name": "Challenge",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1607,
                        "src": "8516:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2201,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2197,
                      "name": "_challenges",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1782,
                      "src": "8546:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
                        "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge storage ref)"
                      }
                    },
                    "id": 2200,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2198,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2190,
                        "src": "8558:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentChallenge",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1589,
                      "src": "8558:24:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8546:37:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Challenge_$1607_storage",
                      "typeString": "struct IValidatorRegistry.Challenge storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8516:67:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        },
                        "id": 2207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2203,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2190,
                            "src": "8683:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2204,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1571,
                          "src": "8683:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2205,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1569,
                            "src": "8701:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                              "typeString": "type(enum IValidatorRegistry.Status)"
                            }
                          },
                          "id": 2206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "CHALLENGED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8701:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "src": "8683:35:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2202,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "8675:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8675:44:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2209,
                  "nodeType": "ExpressionStatement",
                  "src": "8675:44:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2211,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "8737:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 2212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8737:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2213,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2196,
                            "src": "8752:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2214,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "challengeEnd",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1602,
                          "src": "8752:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8737:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2210,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "8729:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8729:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2217,
                  "nodeType": "ExpressionStatement",
                  "src": "8729:46:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "8793:20:12",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2219,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2196,
                            "src": "8794:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2220,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "finalized",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1604,
                          "src": "8794:19:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2218,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "8785:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8785:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2223,
                  "nodeType": "ExpressionStatement",
                  "src": "8785:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2225,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2196,
                            "src": "8832:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2226,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1598,
                          "src": "8832:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2227,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2190,
                            "src": "8853:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2228,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakedBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1573,
                          "src": "8853:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8832:42:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2224,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "8824:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8824:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2231,
                  "nodeType": "ExpressionStatement",
                  "src": "8824:51:12"
                },
                {
                  "assignments": [
                    2233
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2233,
                      "name": "winningOption",
                      "nodeType": "VariableDeclaration",
                      "scope": 2476,
                      "src": "8886:18:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2232,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8886:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2239,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2236,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2196,
                          "src": "8929:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2237,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pollId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1600,
                        "src": "8929:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2234,
                        "name": "_voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1772,
                        "src": "8907:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      },
                      "id": 2235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3703,
                      "src": "8907:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 2238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8907:39:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8886:60:12"
                },
                {
                  "assignments": [
                    2241
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2241,
                      "name": "holderCut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2476,
                      "src": "8993:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2240,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8993:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2250,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 2248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9057:3:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2245,
                            "name": "_stakeholderCut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1768,
                            "src": "9036:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2242,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2190,
                              "src": "9010:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2243,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakedBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1573,
                            "src": "9010:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3811,
                          "src": "9010:25:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9010:42:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3835,
                      "src": "9010:46:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9010:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8993:68:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2251,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2196,
                        "src": "9071:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2253,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "voterTotal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1596,
                      "src": "9071:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2257,
                          "name": "holderCut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2241,
                          "src": "9120:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2254,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2190,
                            "src": "9094:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2255,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakedBalance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1573,
                          "src": "9094:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2256,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3859,
                        "src": "9094:25:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9094:36:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9071:59:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2260,
                  "nodeType": "ExpressionStatement",
                  "src": "9071:59:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2261,
                      "name": "winningOption",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2233,
                      "src": "9144:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9161:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9144:18:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2474,
                    "nodeType": "Block",
                    "src": "10341:1618:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2349,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "10355:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2351,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "passed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1606,
                            "src": "10355:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 2352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10374:5:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "10355:24:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2354,
                        "nodeType": "ExpressionStatement",
                        "src": "10355:24:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2355,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "10393:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2357,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "finalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1604,
                            "src": "10393:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10415:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "10393:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2360,
                        "nodeType": "ExpressionStatement",
                        "src": "10393:26:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2364,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "10510:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2365,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "challenger",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1594,
                              "src": "10510:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2366,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10532:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2367,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakedBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1573,
                              "src": "10532:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2361,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "10489:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "confiscate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1228,
                            "src": "10489:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10489:65:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2369,
                        "nodeType": "ExpressionStatement",
                        "src": "10489:65:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2370,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "10661:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2372,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "10661:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2376,
                                "name": "holderCut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2241,
                                "src": "10703:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2373,
                                  "name": "challenge",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2196,
                                  "src": "10681:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                  }
                                },
                                "id": 2374,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1598,
                                "src": "10681:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3859,
                              "src": "10681:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10681:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10661:52:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2379,
                        "nodeType": "ExpressionStatement",
                        "src": "10661:52:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2384,
                                  "name": "_treasury",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1770,
                                  "src": "10750:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                ],
                                "id": 2383,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10742:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10742:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2386,
                              "name": "holderCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "10762:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2380,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1774,
                              "src": "10727:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DigmToken_$712",
                                "typeString": "contract DigmToken"
                              }
                            },
                            "id": 2382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4125,
                            "src": "10727:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10727:45:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2388,
                        "nodeType": "ExpressionStatement",
                        "src": "10727:45:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2392,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10802:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2393,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1587,
                              "src": "10802:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2394,
                              "name": "holderCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "10817:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2389,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "10786:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "award",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1270,
                            "src": "10786:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10786:41:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2396,
                        "nodeType": "ExpressionStatement",
                        "src": "10786:41:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2397,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2190,
                              "src": "10885:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2398,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "exitBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1579,
                            "src": "10885:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10905:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10885:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2432,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "11492:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2433,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "confirmationBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1577,
                              "src": "11492:25:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11520:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "11492:29:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 2463,
                            "nodeType": "Block",
                            "src": "11686:149:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2450,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11743:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2452,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "status",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1571,
                                    "src": "11743:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Status_$1569",
                                      "typeString": "enum IValidatorRegistry.Status"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2453,
                                      "name": "Status",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1569,
                                      "src": "11760:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                        "typeString": "type(enum IValidatorRegistry.Status)"
                                      }
                                    },
                                    "id": 2454,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PENDING",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11760:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Status_$1569",
                                      "typeString": "enum IValidatorRegistry.Status"
                                    }
                                  },
                                  "src": "11743:31:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Status_$1569",
                                    "typeString": "enum IValidatorRegistry.Status"
                                  }
                                },
                                "id": 2456,
                                "nodeType": "ExpressionStatement",
                                "src": "11743:31:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2457,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11792:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2459,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "currentChallenge",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1589,
                                    "src": "11792:24:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2460,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11819:1:12",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "11792:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2462,
                                "nodeType": "ExpressionStatement",
                                "src": "11792:28:12"
                              }
                            ]
                          },
                          "id": 2464,
                          "nodeType": "IfStatement",
                          "src": "11489:346:12",
                          "trueBody": {
                            "id": 2449,
                            "nodeType": "Block",
                            "src": "11523:157:12",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2436,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11587:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2438,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "status",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1571,
                                    "src": "11587:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Status_$1569",
                                      "typeString": "enum IValidatorRegistry.Status"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2439,
                                      "name": "Status",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1569,
                                      "src": "11604:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                        "typeString": "type(enum IValidatorRegistry.Status)"
                                      }
                                    },
                                    "id": 2440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "ACCEPTED",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11604:15:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Status_$1569",
                                      "typeString": "enum IValidatorRegistry.Status"
                                    }
                                  },
                                  "src": "11587:32:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Status_$1569",
                                    "typeString": "enum IValidatorRegistry.Status"
                                  }
                                },
                                "id": 2442,
                                "nodeType": "ExpressionStatement",
                                "src": "11587:32:12"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2443,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11637:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2445,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "currentChallenge",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1589,
                                    "src": "11637:24:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2446,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11664:1:12",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "11637:28:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2448,
                                "nodeType": "ExpressionStatement",
                                "src": "11637:28:12"
                              }
                            ]
                          }
                        },
                        "id": 2465,
                        "nodeType": "IfStatement",
                        "src": "10882:953:12",
                        "trueBody": {
                          "id": 2431,
                          "nodeType": "Block",
                          "src": "10908:575:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2405,
                                        "name": "_treasury",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1770,
                                        "src": "11160:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_Treasury_$1561",
                                          "typeString": "contract Treasury"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Treasury_$1561",
                                          "typeString": "contract Treasury"
                                        }
                                      ],
                                      "id": 2404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11152:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 2406,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11152:18:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2407,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11172:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2408,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stakedBalance",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1573,
                                    "src": "11172:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2401,
                                    "name": "_token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1774,
                                    "src": "11137:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DigmToken_$712",
                                      "typeString": "contract DigmToken"
                                    }
                                  },
                                  "id": 2403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "approve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4125,
                                  "src": "11137:14:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 2409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11137:57:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2410,
                              "nodeType": "ExpressionStatement",
                              "src": "11137:57:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2414,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11236:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2415,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1587,
                                    "src": "11236:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2416,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11251:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2417,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stakedBalance",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1573,
                                    "src": "11251:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2411,
                                    "name": "_treasury",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1770,
                                    "src": "11212:9:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Treasury_$1561",
                                      "typeString": "contract Treasury"
                                    }
                                  },
                                  "id": 2413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "releaseTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1208,
                                  "src": "11212:23:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 2418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11212:61:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2419,
                              "nodeType": "ExpressionStatement",
                              "src": "11212:61:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2421,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11377:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2422,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tendermintPublicKey",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1585,
                                    "src": "11377:27:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 2420,
                                  "name": "removeListingKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3055,
                                  "src": "11360:16:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32)"
                                  }
                                },
                                "id": 2423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11360:45:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2424,
                              "nodeType": "ExpressionStatement",
                              "src": "11360:45:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "11423:45:12",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2425,
                                    "name": "_listings",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1778,
                                    "src": "11430:9:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                                      "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                                    }
                                  },
                                  "id": 2428,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2426,
                                      "name": "listing",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2190,
                                      "src": "11440:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2427,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tendermintPublicKey",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1585,
                                    "src": "11440:27:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "11430:38:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Listing_$1590_storage",
                                    "typeString": "struct IValidatorRegistry.Listing storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2430,
                              "nodeType": "ExpressionStatement",
                              "src": "11423:45:12"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2467,
                                  "name": "challenge",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2196,
                                  "src": "11906:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                  }
                                },
                                "id": 2468,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1598,
                                "src": "11906:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2469,
                                  "name": "challenge",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2196,
                                  "src": "11927:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                  }
                                },
                                "id": 2470,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "voterTotal",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1596,
                                "src": "11927:20:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11906:41:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2466,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4572,
                              4573
                            ],
                            "referencedDeclaration": 4572,
                            "src": "11898:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 2472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11898:50:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2473,
                        "nodeType": "ExpressionStatement",
                        "src": "11898:50:12"
                      }
                    ]
                  },
                  "id": 2475,
                  "nodeType": "IfStatement",
                  "src": "9141:2818:12",
                  "trueBody": {
                    "id": 2348,
                    "nodeType": "Block",
                    "src": "9164:1171:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2264,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "9178:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2266,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "passed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1606,
                            "src": "9178:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9197:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "9178:23:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2269,
                        "nodeType": "ExpressionStatement",
                        "src": "9178:23:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2270,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "9215:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2272,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "finalized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1604,
                            "src": "9215:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9237:4:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "9215:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2275,
                        "nodeType": "ExpressionStatement",
                        "src": "9215:26:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2279,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "9338:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2280,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1587,
                              "src": "9338:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2281,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "9353:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2282,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakedBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1573,
                              "src": "9353:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2276,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "9317:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "confiscate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1228,
                            "src": "9317:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9317:58:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2284,
                        "nodeType": "ExpressionStatement",
                        "src": "9317:58:12"
                      },
                      {
                        "assignments": [
                          2286
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2286,
                            "name": "challengerTotalWinnings",
                            "nodeType": "VariableDeclaration",
                            "scope": 2348,
                            "src": "9627:28:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2285,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "9627:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2292,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2290,
                              "name": "holderCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "9680:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2287,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "9658:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2288,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1598,
                              "src": "9658:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3883,
                            "src": "9658:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9658:32:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9627:63:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2297,
                                  "name": "_treasury",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1770,
                                  "src": "9727:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                ],
                                "id": 2296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9719:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9719:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2299,
                              "name": "challengerTotalWinnings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2286,
                              "src": "9739:23:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2293,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1774,
                              "src": "9704:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DigmToken_$712",
                                "typeString": "contract DigmToken"
                              }
                            },
                            "id": 2295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4125,
                            "src": "9704:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9704:59:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2301,
                        "nodeType": "ExpressionStatement",
                        "src": "9704:59:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2305,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "9908:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2306,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "challenger",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1594,
                              "src": "9908:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2307,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "9930:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2308,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1598,
                              "src": "9930:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2302,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "9884:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "releaseTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1208,
                            "src": "9884:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9884:64:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2310,
                        "nodeType": "ExpressionStatement",
                        "src": "9884:64:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2314,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2196,
                                "src": "9978:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2315,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "challenger",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1594,
                              "src": "9978:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2316,
                              "name": "holderCut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2241,
                              "src": "10000:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2311,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "9962:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2313,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "award",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1270,
                            "src": "9962:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9962:48:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2318,
                        "nodeType": "ExpressionStatement",
                        "src": "9962:48:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2319,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2196,
                              "src": "10024:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2321,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "10024:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2325,
                                "name": "holderCut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2241,
                                "src": "10066:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2322,
                                  "name": "challenge",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2196,
                                  "src": "10044:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                  }
                                },
                                "id": 2323,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1598,
                                "src": "10044:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3859,
                              "src": "10044:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2326,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10044:32:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10024:52:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2328,
                        "nodeType": "ExpressionStatement",
                        "src": "10024:52:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2330,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10159:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2331,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tendermintPublicKey",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1585,
                              "src": "10159:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2332,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10188:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2333,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1587,
                              "src": "10188:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10203:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2329,
                            "name": "emitValidatorRegistryUpdate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3106,
                            "src": "10131:27:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256)"
                            }
                          },
                          "id": 2335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10131:74:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2336,
                        "nodeType": "ExpressionStatement",
                        "src": "10131:74:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2338,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10237:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2339,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tendermintPublicKey",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1585,
                              "src": "10237:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2337,
                            "name": "removeListingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3055,
                            "src": "10220:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10220:45:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2341,
                        "nodeType": "ExpressionStatement",
                        "src": "10220:45:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "10279:45:12",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2342,
                              "name": "_listings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1778,
                              "src": "10286:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                                "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                              }
                            },
                            "id": 2345,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2343,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2190,
                                "src": "10296:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2344,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tendermintPublicKey",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1585,
                              "src": "10296:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10286:38:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage",
                              "typeString": "struct IValidatorRegistry.Listing storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2347,
                        "nodeType": "ExpressionStatement",
                        "src": "10279:45:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Resolve a challenge\n@notice Resolve a challenge\n@param pubKey Hex encoded tendermint public key",
            "id": 2477,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "resolveChallenge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2186,
                  "name": "pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2477,
                  "src": "8407:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2185,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8407:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8406:16:12"
            },
            "returnParameters": {
              "id": 2188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8430:0:12"
            },
            "scope": 3282,
            "src": "8381:3584:12",
            "stateMutability": "nonpayable",
            "superFunction": 1711,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2569,
              "nodeType": "Block",
              "src": "12216:913:12",
              "statements": [
                {
                  "assignments": [
                    2487
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2487,
                      "name": "challenge",
                      "nodeType": "VariableDeclaration",
                      "scope": 2569,
                      "src": "12226:27:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Challenge"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2486,
                        "name": "Challenge",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1607,
                        "src": "12226:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2491,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2488,
                      "name": "_challenges",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1782,
                      "src": "12256:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Challenge_$1607_storage_$",
                        "typeString": "mapping(uint256 => struct IValidatorRegistry.Challenge storage ref)"
                      }
                    },
                    "id": 2490,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2489,
                      "name": "challengeId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2481,
                      "src": "12268:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12256:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Challenge_$1607_storage",
                      "typeString": "struct IValidatorRegistry.Challenge storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12226:54:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2493,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "12340:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 2494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12340:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2495,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2487,
                            "src": "12355:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2496,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "challengeEnd",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1602,
                          "src": "12355:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12340:37:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2492,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "12332:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12332:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2499,
                  "nodeType": "ExpressionStatement",
                  "src": "12332:46:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2502,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "12425:20:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2500,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2487,
                        "src": "12426:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2501,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "finalized",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1604,
                      "src": "12426:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2509,
                  "nodeType": "IfStatement",
                  "src": "12422:88:12",
                  "trueBody": {
                    "id": 2508,
                    "nodeType": "Block",
                    "src": "12447:63:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2504,
                                "name": "challenge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2487,
                                "src": "12478:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                                }
                              },
                              "id": 2505,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "listingKey",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1592,
                              "src": "12478:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2503,
                            "name": "resolveChallenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2477,
                            "src": "12461:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12461:38:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2507,
                        "nodeType": "ExpressionStatement",
                        "src": "12461:38:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2511,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2487,
                          "src": "12573:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2512,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "finalized",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1604,
                        "src": "12573:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2510,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "12565:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12565:28:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2514,
                  "nodeType": "ExpressionStatement",
                  "src": "12565:28:12"
                },
                {
                  "assignments": [
                    2516
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2516,
                      "name": "winningTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 2569,
                      "src": "12628:18:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2515,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12628:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2523,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2519,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2487,
                          "src": "12675:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2520,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pollId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1600,
                        "src": "12675:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2521,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2479,
                        "src": "12693:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2517,
                        "name": "_voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1772,
                        "src": "12649:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      },
                      "id": 2518,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userWinningTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3775,
                      "src": "12649:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address) view external returns (uint256)"
                      }
                    },
                    "id": 2522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12649:54:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12628:75:12"
                },
                {
                  "assignments": [
                    2525
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2525,
                      "name": "totalWinningTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 2569,
                      "src": "12713:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2524,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12713:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2531,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2528,
                          "name": "challenge",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2487,
                          "src": "12766:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                          }
                        },
                        "id": 2529,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pollId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1600,
                        "src": "12766:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2526,
                        "name": "_voting",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1772,
                        "src": "12739:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Voting_$3776",
                          "typeString": "contract Voting"
                        }
                      },
                      "id": 2527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalWinningTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3728,
                      "src": "12739:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 2530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12739:44:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12713:70:12"
                },
                {
                  "assignments": [
                    2533
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2533,
                      "name": "voterCut",
                      "nodeType": "VariableDeclaration",
                      "scope": 2569,
                      "src": "12882:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2532,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12882:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2542,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2540,
                        "name": "totalWinningTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2525,
                        "src": "12942:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2537,
                            "name": "winningTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2516,
                            "src": "12923:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2534,
                              "name": "challenge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2487,
                              "src": "12898:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                              }
                            },
                            "id": 2535,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "voterTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1596,
                            "src": "12898:20:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3811,
                          "src": "12898:24:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2538,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12898:39:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3835,
                      "src": "12898:43:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12898:63:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12882:79:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2543,
                        "name": "challenge",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2487,
                        "src": "12971:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                        }
                      },
                      "id": 2545,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "balance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1598,
                      "src": "12971:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2549,
                          "name": "voterCut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2533,
                          "src": "13013:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2546,
                            "name": "challenge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2487,
                            "src": "12991:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Challenge_$1607_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Challenge storage pointer"
                            }
                          },
                          "id": 2547,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1598,
                          "src": "12991:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3859,
                        "src": "12991:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 2550,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12991:31:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12971:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2552,
                  "nodeType": "ExpressionStatement",
                  "src": "12971:51:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2557,
                            "name": "_treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1770,
                            "src": "13055:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          ],
                          "id": 2556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13047:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13047:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2559,
                        "name": "voterCut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2533,
                        "src": "13067:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2553,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "13032:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      },
                      "id": 2555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4125,
                      "src": "13032:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13032:44:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2561,
                  "nodeType": "ExpressionStatement",
                  "src": "13032:44:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2565,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2479,
                        "src": "13102:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "voterCut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2533,
                        "src": "13113:8:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2562,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "13086:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 2564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "award",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1270,
                      "src": "13086:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13086:36:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2568,
                  "nodeType": "ExpressionStatement",
                  "src": "13086:36:12"
                }
              ]
            },
            "documentation": "@dev Claims winnings from a challenge\n@notice Claims winnings from a challenge\n@param challengeId Challenge id to claim rewards from.",
            "id": 2570,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2484,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2483,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "12203:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12203:12:12"
              }
            ],
            "name": "claimWinnings",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2479,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2570,
                  "src": "12159:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2478,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12159:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2481,
                  "name": "challengeId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2570,
                  "src": "12178:16:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2480,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "12178:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12158:37:12"
            },
            "returnParameters": {
              "id": 2485,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12216:0:12"
            },
            "scope": 3282,
            "src": "12136:993:12",
            "stateMutability": "nonpayable",
            "superFunction": 1701,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2585,
              "nodeType": "Block",
              "src": "13347:168:12",
              "statements": [
                {
                  "assignments": [
                    2576
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2576,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2585,
                      "src": "13380:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2575,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "13380:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2580,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2577,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "13406:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2579,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2578,
                      "name": "pubKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2572,
                      "src": "13416:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13406:17:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13380:43:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2582,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2576,
                        "src": "13500:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2581,
                      "name": "processRewards",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2964,
                      "src": "13485:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                      }
                    },
                    "id": 2583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13485:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2584,
                  "nodeType": "ExpressionStatement",
                  "src": "13485:23:12"
                }
              ]
            },
            "documentation": "@dev Claims rewards for a listing\n@notice Claims rewards for a listing\n@param pubKey Public key for the listing to have rewards claimed",
            "id": 2586,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "claimRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2572,
                  "name": "pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2586,
                  "src": "13324:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2571,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13324:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13323:16:12"
            },
            "returnParameters": {
              "id": 2574,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13347:0:12"
            },
            "scope": 3282,
            "src": "13302:213:12",
            "stateMutability": "nonpayable",
            "superFunction": 1706,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2675,
              "nodeType": "Block",
              "src": "13836:797:12",
              "statements": [
                {
                  "assignments": [
                    2596
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2596,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2675,
                      "src": "13869:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2595,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "13869:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2600,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2597,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "13895:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2599,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2598,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2590,
                      "src": "13905:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13895:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13869:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2602,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2596,
                            "src": "14003:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2603,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1587,
                          "src": "14003:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2604,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2588,
                          "src": "14020:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "14003:26:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2601,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "13995:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13995:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2607,
                  "nodeType": "ExpressionStatement",
                  "src": "13995:35:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          },
                          "id": 2613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2609,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2596,
                              "src": "14048:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2610,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "status",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1571,
                            "src": "14048:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2611,
                              "name": "Status",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1569,
                              "src": "14066:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                "typeString": "type(enum IValidatorRegistry.Status)"
                              }
                            },
                            "id": 2612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PENDING",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14066:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            }
                          },
                          "src": "14048:32:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2617,
                                "name": "_applicationPeriod",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1750,
                                "src": "14113:18:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2614,
                                  "name": "listing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2596,
                                  "src": "14084:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                  }
                                },
                                "id": 2615,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "applicationBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1575,
                                "src": "14084:24:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3883,
                              "src": "14084:28:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14084:48:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2619,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "14136:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14136:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14084:64:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14048:100:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2608,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "14040:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14040:109:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2624,
                  "nodeType": "ExpressionStatement",
                  "src": "14040:109:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2625,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "14194:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2627,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "14194:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2628,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "14211:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "ACCEPTED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14211:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "14194:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "id": 2631,
                  "nodeType": "ExpressionStatement",
                  "src": "14194:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2632,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "14236:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2634,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "confirmationBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1577,
                      "src": "14236:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2635,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4559,
                        "src": "14264:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2636,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14264:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14236:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2638,
                  "nodeType": "ExpressionStatement",
                  "src": "14236:40:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 2642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2639,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "14289:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2640,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "rewardRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1581,
                      "src": "14289:18:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14310:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "14289:22:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2660,
                    "nodeType": "Block",
                    "src": "14398:63:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2653,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2596,
                              "src": "14412:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2655,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1583,
                            "src": "14412:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2656,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "14438:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14438:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14412:38:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2659,
                        "nodeType": "ExpressionStatement",
                        "src": "14412:38:12"
                      }
                    ]
                  },
                  "id": 2661,
                  "nodeType": "IfStatement",
                  "src": "14286:175:12",
                  "trueBody": {
                    "id": 2652,
                    "nodeType": "Block",
                    "src": "14313:79:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2643,
                              "name": "listing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2596,
                              "src": "14327:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2645,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1583,
                            "src": "14327:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2646,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4559,
                                "src": "14353:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14353:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2648,
                              "name": "_rewardPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "14368:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14353:28:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14327:54:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2651,
                        "nodeType": "ExpressionStatement",
                        "src": "14327:54:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2663,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2596,
                        "src": "14485:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2662,
                      "name": "processRewards",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2964,
                      "src": "14470:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                      }
                    },
                    "id": 2664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14470:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2665,
                  "nodeType": "ExpressionStatement",
                  "src": "14470:23:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2667,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2596,
                          "src": "14560:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2668,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "14560:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2669,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2596,
                          "src": "14589:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2670,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "14589:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2671,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2596,
                          "src": "14604:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2672,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "14604:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2666,
                      "name": "emitValidatorRegistryUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3106,
                      "src": "14532:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14532:94:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2674,
                  "nodeType": "ExpressionStatement",
                  "src": "14532:94:12"
                }
              ]
            },
            "documentation": "@dev Confirm a listing registration\n@notice Confirm a listing registration\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key",
            "id": 2676,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2593,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2592,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "13823:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13823:12:12"
              }
            ],
            "name": "confirmListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2588,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2676,
                  "src": "13768:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2587,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13768:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2590,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2676,
                  "src": "13787:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2589,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13787:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13767:48:12"
            },
            "returnParameters": {
              "id": 2594,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13836:0:12"
            },
            "scope": 3282,
            "src": "13744:889:12",
            "stateMutability": "nonpayable",
            "superFunction": 1718,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2765,
              "nodeType": "Block",
              "src": "14934:1000:12",
              "statements": [
                {
                  "assignments": [
                    2686
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2686,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2765,
                      "src": "14971:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2685,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "14971:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2690,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2687,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "14997:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2689,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2688,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2680,
                      "src": "15007:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14997:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14971:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2692,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2686,
                            "src": "15092:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2693,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1587,
                          "src": "15092:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2694,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2678,
                          "src": "15109:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "15092:26:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2691,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "15084:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15084:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2697,
                  "nodeType": "ExpressionStatement",
                  "src": "15084:35:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    },
                    "id": 2702,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2698,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2686,
                        "src": "15203:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2699,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "15203:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2700,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "15221:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2701,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "PENDING",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15221:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "15203:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2732,
                  "nodeType": "IfStatement",
                  "src": "15200:431:12",
                  "trueBody": {
                    "id": 2731,
                    "nodeType": "Block",
                    "src": "15237:394:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2707,
                                  "name": "_treasury",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1770,
                                  "src": "15327:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Treasury_$1561",
                                    "typeString": "contract Treasury"
                                  }
                                ],
                                "id": 2706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15319:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15319:18:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2709,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2686,
                                "src": "15339:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2710,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakedBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1573,
                              "src": "15339:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2703,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1774,
                              "src": "15304:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_DigmToken_$712",
                                "typeString": "contract DigmToken"
                              }
                            },
                            "id": 2705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4125,
                            "src": "15304:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15304:57:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2712,
                        "nodeType": "ExpressionStatement",
                        "src": "15304:57:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2716,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2678,
                              "src": "15399:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2717,
                                "name": "listing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2686,
                                "src": "15410:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2718,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakedBalance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1573,
                              "src": "15410:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2713,
                              "name": "_treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1770,
                              "src": "15375:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Treasury_$1561",
                                "typeString": "contract Treasury"
                              }
                            },
                            "id": 2715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "releaseTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1208,
                            "src": "15375:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15375:57:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2720,
                        "nodeType": "ExpressionStatement",
                        "src": "15375:57:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "15511:37:12",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2721,
                              "name": "_listings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1778,
                              "src": "15518:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                                "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                              }
                            },
                            "id": 2723,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2722,
                              "name": "tendermintPublicKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2680,
                              "src": "15528:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15518:30:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage",
                              "typeString": "struct IValidatorRegistry.Listing storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2725,
                        "nodeType": "ExpressionStatement",
                        "src": "15511:37:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2727,
                              "name": "tendermintPublicKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2680,
                              "src": "15579:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2726,
                            "name": "removeListingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3055,
                            "src": "15562:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15562:37:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2729,
                        "nodeType": "ExpressionStatement",
                        "src": "15562:37:12"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 2684,
                        "id": 2730,
                        "nodeType": "Return",
                        "src": "15614:7:12"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        },
                        "id": 2738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2734,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2686,
                            "src": "15689:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2735,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1571,
                          "src": "15689:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2736,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1569,
                            "src": "15707:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                              "typeString": "type(enum IValidatorRegistry.Status)"
                            }
                          },
                          "id": 2737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "ACCEPTED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15707:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "src": "15689:33:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2733,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "15681:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15681:42:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2740,
                  "nodeType": "ExpressionStatement",
                  "src": "15681:42:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2746,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2741,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2686,
                        "src": "15734:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2743,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1571,
                      "src": "15734:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2744,
                        "name": "Status",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1569,
                        "src": "15751:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                          "typeString": "type(enum IValidatorRegistry.Status)"
                        }
                      },
                      "id": 2745,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "EXITING",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15751:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$1569",
                        "typeString": "enum IValidatorRegistry.Status"
                      }
                    },
                    "src": "15734:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "id": 2747,
                  "nodeType": "ExpressionStatement",
                  "src": "15734:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2748,
                        "name": "listing",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2686,
                        "src": "15775:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 2750,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "exitBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1579,
                      "src": "15775:17:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2754,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2751,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4559,
                          "src": "15795:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 2752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15795:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2753,
                        "name": "_exitPeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1759,
                        "src": "15810:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "15795:26:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15775:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2756,
                  "nodeType": "ExpressionStatement",
                  "src": "15775:46:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2758,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2686,
                          "src": "15881:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2759,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "15881:27:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2760,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2686,
                          "src": "15910:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2761,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "15910:13:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2762,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15925:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2757,
                      "name": "emitValidatorRegistryUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3106,
                      "src": "15853:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15853:74:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2764,
                  "nodeType": "ExpressionStatement",
                  "src": "15853:74:12"
                }
              ]
            },
            "documentation": "@dev Initiate a listing exit\n@notice Initiate a listing exit\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key",
            "id": 2766,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2683,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2682,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "14921:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14921:12:12"
              }
            ],
            "name": "initExit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2678,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2766,
                  "src": "14866:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2677,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14866:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2680,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2766,
                  "src": "14885:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2679,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14885:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14865:48:12"
            },
            "returnParameters": {
              "id": 2684,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14934:0:12"
            },
            "scope": 3282,
            "src": "14848:1086:12",
            "stateMutability": "nonpayable",
            "superFunction": 1725,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2831,
              "nodeType": "Block",
              "src": "16239:731:12",
              "statements": [
                {
                  "assignments": [
                    2776
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2776,
                      "name": "listing",
                      "nodeType": "VariableDeclaration",
                      "scope": 2831,
                      "src": "16276:23:12",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                        "typeString": "struct IValidatorRegistry.Listing"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2775,
                        "name": "Listing",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1590,
                        "src": "16276:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2780,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2777,
                      "name": "_listings",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1778,
                      "src": "16302:9:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                        "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                      }
                    },
                    "id": 2779,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2778,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2770,
                      "src": "16312:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "16302:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage",
                      "typeString": "struct IValidatorRegistry.Listing storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16276:56:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2782,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2776,
                            "src": "16397:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2783,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1587,
                          "src": "16397:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2784,
                          "name": "msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2768,
                          "src": "16414:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "16397:26:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2781,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "16389:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16389:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2787,
                  "nodeType": "ExpressionStatement",
                  "src": "16389:35:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Status_$1569",
                          "typeString": "enum IValidatorRegistry.Status"
                        },
                        "id": 2793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2789,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2776,
                            "src": "16539:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2790,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1571,
                          "src": "16539:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2791,
                            "name": "Status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1569,
                            "src": "16557:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                              "typeString": "type(enum IValidatorRegistry.Status)"
                            }
                          },
                          "id": 2792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "EXITING",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16557:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Status_$1569",
                            "typeString": "enum IValidatorRegistry.Status"
                          }
                        },
                        "src": "16539:32:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2788,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "16531:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16531:41:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2795,
                  "nodeType": "ExpressionStatement",
                  "src": "16531:41:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2797,
                            "name": "listing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2776,
                            "src": "16590:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                            }
                          },
                          "id": 2798,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "exitBlock",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1579,
                          "src": "16590:17:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2799,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4559,
                            "src": "16611:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 2800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16611:12:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16590:33:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2796,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4572,
                        4573
                      ],
                      "referencedDeclaration": 4572,
                      "src": "16582:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16582:42:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2803,
                  "nodeType": "ExpressionStatement",
                  "src": "16582:42:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2808,
                            "name": "_treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1770,
                            "src": "16707:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          ],
                          "id": 2807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "16699:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2809,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16699:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2810,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2776,
                          "src": "16719:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2811,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "16719:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2804,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "16684:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      },
                      "id": 2806,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4125,
                      "src": "16684:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2812,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16684:57:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2813,
                  "nodeType": "ExpressionStatement",
                  "src": "16684:57:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2817,
                        "name": "msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2768,
                        "src": "16775:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2818,
                          "name": "listing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2776,
                          "src": "16786:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2819,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "16786:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2814,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "16751:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 2816,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "releaseTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1208,
                      "src": "16751:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16751:57:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2821,
                  "nodeType": "ExpressionStatement",
                  "src": "16751:57:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2825,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "16879:37:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2822,
                        "name": "_listings",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1778,
                        "src": "16886:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                          "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                        }
                      },
                      "id": 2824,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2823,
                        "name": "tendermintPublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2770,
                        "src": "16896:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16886:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage",
                        "typeString": "struct IValidatorRegistry.Listing storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2826,
                  "nodeType": "ExpressionStatement",
                  "src": "16879:37:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2828,
                        "name": "tendermintPublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2770,
                        "src": "16943:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2827,
                      "name": "removeListingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3055,
                      "src": "16926:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 2829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16926:37:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2830,
                  "nodeType": "ExpressionStatement",
                  "src": "16926:37:12"
                }
              ]
            },
            "documentation": "@dev Complete a listing exit\n@notice Complete a listing exit\n@param msgSender msg.sender from the proxy call\n@param tendermintPublicKey Hex encoded tendermint public key",
            "id": 2832,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 2773,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2772,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "16226:12:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "16226:12:12"
              }
            ],
            "name": "finalizeExit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2771,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2768,
                  "name": "msgSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2832,
                  "src": "16171:17:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2767,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16171:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2770,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2832,
                  "src": "16190:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2769,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16190:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16170:48:12"
            },
            "returnParameters": {
              "id": 2774,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16239:0:12"
            },
            "scope": 3282,
            "src": "16149:821:12",
            "stateMutability": "nonpayable",
            "superFunction": 1732,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2859,
              "nodeType": "Block",
              "src": "17065:127:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_Status_$1569",
                              "typeString": "enum IValidatorRegistry.Status"
                            },
                            "id": 2843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2839,
                                "name": "l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2834,
                                "src": "17083:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2840,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "status",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1571,
                              "src": "17083:8:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2841,
                                "name": "Status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1569,
                                "src": "17095:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$1569_$",
                                  "typeString": "type(enum IValidatorRegistry.Status)"
                                }
                              },
                              "id": 2842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "ACCEPTED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17095:15:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$1569",
                                "typeString": "enum IValidatorRegistry.Status"
                              }
                            },
                            "src": "17083:27:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 2847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2844,
                                "name": "l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2834,
                                "src": "17114:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2845,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rewardRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1581,
                              "src": "17114:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2846,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17130:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "17114:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "17083:48:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2849,
                                "name": "l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2834,
                                "src": "17135:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 2850,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1583,
                              "src": "17135:17:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2851,
                              "name": "_rewardPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "17155:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17135:33:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2853,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4559,
                              "src": "17172:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2854,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "number",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17172:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17135:49:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "17083:101:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 2857,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "17082:103:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2838,
                  "id": 2858,
                  "nodeType": "Return",
                  "src": "17075:110:12"
                }
              ]
            },
            "documentation": null,
            "id": 2860,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasRewardPending",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2835,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2834,
                  "name": "l",
                  "nodeType": "VariableDeclaration",
                  "scope": 2860,
                  "src": "17017:17:12",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                    "typeString": "struct IValidatorRegistry.Listing"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2833,
                    "name": "Listing",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1590,
                    "src": "17017:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                      "typeString": "struct IValidatorRegistry.Listing"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17016:19:12"
            },
            "returnParameters": {
              "id": 2838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2837,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2860,
                  "src": "17059:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2836,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17059:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17058:6:12"
            },
            "scope": 3282,
            "src": "16991:201:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2963,
              "nodeType": "Block",
              "src": "17250:898:12",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2866,
                        "name": "l",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2862,
                        "src": "17280:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2865,
                      "name": "hasRewardPending",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2860,
                      "src": "17263:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Listing_$1590_storage_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer) view returns (bool)"
                      }
                    },
                    "id": 2867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17263:19:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2962,
                  "nodeType": "IfStatement",
                  "src": "17260:882:12",
                  "trueBody": {
                    "id": 2961,
                    "nodeType": "Block",
                    "src": "17284:858:12",
                    "statements": [
                      {
                        "assignments": [
                          2869
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2869,
                            "name": "rewardPeriods",
                            "nodeType": "VariableDeclaration",
                            "scope": 2961,
                            "src": "17298:18:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2868,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "17298:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2879,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2877,
                              "name": "_rewardPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "17359:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2873,
                                    "name": "l",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2862,
                                    "src": "17336:1:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                      "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                    }
                                  },
                                  "id": 2874,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastRewardBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1583,
                                  "src": "17336:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2870,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4559,
                                    "src": "17319:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 2871,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "17319:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3859,
                                "src": "17319:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17319:35:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3835,
                            "src": "17319:39:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17319:54:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17298:75:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 2883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2880,
                              "name": "l",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2862,
                              "src": "17390:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2881,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rewardRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1581,
                            "src": "17390:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17405:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17390:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2946,
                          "nodeType": "Block",
                          "src": "17508:500:12",
                          "statements": [
                            {
                              "assignments": [
                                2900
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2900,
                                  "name": "tokensToBurn",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2946,
                                  "src": "17526:17:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2899,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17526:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2911,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2909,
                                    "name": "rewardPeriods",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2869,
                                    "src": "17574:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 2906,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2902,
                                            "name": "l",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2862,
                                            "src": "17551:1:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                            }
                                          },
                                          "id": 2903,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "rewardRate",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1581,
                                          "src": "17551:12:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2905,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "-",
                                          "prefix": true,
                                          "src": "17566:2:12",
                                          "subExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 2904,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "17567:1:12",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_minus_1_by_1",
                                            "typeString": "int_const -1"
                                          }
                                        },
                                        "src": "17551:17:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "id": 2901,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17546:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 2907,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17546:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2908,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3811,
                                  "src": "17546:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17546:42:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17526:62:12"
                            },
                            {
                              "assignments": [
                                2913
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2913,
                                  "name": "userTreasuryBalance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2946,
                                  "src": "17606:24:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2912,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17606:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2919,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2916,
                                      "name": "l",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2862,
                                      "src": "17658:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2917,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1587,
                                    "src": "17658:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2914,
                                    "name": "_treasury",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1770,
                                    "src": "17633:9:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Treasury_$1561",
                                      "typeString": "contract Treasury"
                                    }
                                  },
                                  "id": 2915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1425,
                                  "src": "17633:24:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 2918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17633:33:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17606:60:12"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2920,
                                  "name": "userTreasuryBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2913,
                                  "src": "17687:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2921,
                                  "name": "tokensToBurn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2900,
                                  "src": "17709:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17687:34:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 2944,
                                "nodeType": "Block",
                                "src": "17916:78:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2939,
                                            "name": "l",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2862,
                                            "src": "17953:1:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                            }
                                          },
                                          "id": 2940,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owner",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1587,
                                          "src": "17953:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2941,
                                          "name": "tokensToBurn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2900,
                                          "src": "17962:12:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2936,
                                          "name": "_treasury",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1770,
                                          "src": "17934:9:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Treasury_$1561",
                                            "typeString": "contract Treasury"
                                          }
                                        },
                                        "id": 2938,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "burnFrom",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1401,
                                        "src": "17934:18:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256) external"
                                        }
                                      },
                                      "id": 2942,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17934:41:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2943,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17934:41:12"
                                  }
                                ]
                              },
                              "id": 2945,
                              "nodeType": "IfStatement",
                              "src": "17684:310:12",
                              "trueBody": {
                                "id": 2935,
                                "nodeType": "Block",
                                "src": "17723:187:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2926,
                                            "name": "l",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2862,
                                            "src": "17816:1:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                              "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                            }
                                          },
                                          "id": 2927,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owner",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1587,
                                          "src": "17816:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2928,
                                          "name": "userTreasuryBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2913,
                                          "src": "17825:19:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2923,
                                          "name": "_treasury",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1770,
                                          "src": "17797:9:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Treasury_$1561",
                                            "typeString": "contract Treasury"
                                          }
                                        },
                                        "id": 2925,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "burnFrom",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1401,
                                        "src": "17797:18:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256) external"
                                        }
                                      },
                                      "id": 2929,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17797:48:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2930,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17797:48:12"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2932,
                                          "name": "l",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2862,
                                          "src": "17889:1:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                          }
                                        ],
                                        "id": 2931,
                                        "name": "touchAndRemoveListing",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3012,
                                        "src": "17867:21:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                                          "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                                        }
                                      },
                                      "id": 2933,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17867:24:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2934,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17867:24:12"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2947,
                        "nodeType": "IfStatement",
                        "src": "17387:621:12",
                        "trueBody": {
                          "id": 2898,
                          "nodeType": "Block",
                          "src": "17408:94:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2887,
                                      "name": "l",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2862,
                                      "src": "17440:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                        "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                      }
                                    },
                                    "id": 2888,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1587,
                                    "src": "17440:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2894,
                                        "name": "rewardPeriods",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2869,
                                        "src": "17472:13:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2890,
                                              "name": "l",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2862,
                                              "src": "17454:1:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                              }
                                            },
                                            "id": 2891,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "rewardRate",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1581,
                                            "src": "17454:12:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "id": 2889,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "17449:4:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": "uint"
                                        },
                                        "id": 2892,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17449:18:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 2893,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3811,
                                      "src": "17449:22:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2895,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17449:37:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2884,
                                    "name": "_token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1774,
                                    "src": "17426:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_DigmToken_$712",
                                      "typeString": "contract DigmToken"
                                    }
                                  },
                                  "id": 2886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mintTo",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 711,
                                  "src": "17426:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 2896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17426:61:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2897,
                              "nodeType": "ExpressionStatement",
                              "src": "17426:61:12"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2948,
                              "name": "l",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2862,
                              "src": "18056:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                "typeString": "struct IValidatorRegistry.Listing storage pointer"
                              }
                            },
                            "id": 2950,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastRewardBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1583,
                            "src": "18056:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2956,
                                    "name": "rewardPeriods",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2869,
                                    "src": "18116:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2954,
                                    "name": "_rewardPeriod",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1762,
                                    "src": "18098:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3811,
                                  "src": "18098:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18098:32:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2951,
                                  "name": "l",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2862,
                                  "src": "18076:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                    "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                  }
                                },
                                "id": 2952,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lastRewardBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1583,
                                "src": "18076:17:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3883,
                              "src": "18076:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18076:55:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18056:75:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2960,
                        "nodeType": "ExpressionStatement",
                        "src": "18056:75:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2964,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "processRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2862,
                  "name": "l",
                  "nodeType": "VariableDeclaration",
                  "scope": 2964,
                  "src": "17222:17:12",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                    "typeString": "struct IValidatorRegistry.Listing"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2861,
                    "name": "Listing",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1590,
                    "src": "17222:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                      "typeString": "struct IValidatorRegistry.Listing"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17221:19:12"
            },
            "returnParameters": {
              "id": 2864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17250:0:12"
            },
            "scope": 3282,
            "src": "17198:950:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3011,
              "nodeType": "Block",
              "src": "18213:542:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2970,
                        "name": "l",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2966,
                        "src": "18345:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      ],
                      "id": 2969,
                      "name": "emitValidatorTouchedAndRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3208,
                      "src": "18314:30:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Listing_$1590_storage_ptr_$returns$__$",
                        "typeString": "function (struct IValidatorRegistry.Listing storage pointer)"
                      }
                    },
                    "id": 2971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18314:33:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2972,
                  "nodeType": "ExpressionStatement",
                  "src": "18314:33:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2974,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18385:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2975,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "18385:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2976,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18408:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2977,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "18408:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 2978,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18417:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 2973,
                      "name": "emitValidatorRegistryUpdate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3106,
                      "src": "18357:27:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2979,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18357:62:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2980,
                  "nodeType": "ExpressionStatement",
                  "src": "18357:62:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2985,
                            "name": "_treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1770,
                            "src": "18502:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Treasury_$1561",
                              "typeString": "contract Treasury"
                            }
                          ],
                          "id": 2984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "18494:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2986,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18494:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2987,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18514:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2988,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "18514:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2981,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1774,
                        "src": "18479:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DigmToken_$712",
                          "typeString": "contract DigmToken"
                        }
                      },
                      "id": 2983,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4125,
                      "src": "18479:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18479:51:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2990,
                  "nodeType": "ExpressionStatement",
                  "src": "18479:51:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2994,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18564:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2995,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1587,
                        "src": "18564:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2996,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18573:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 2997,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakedBalance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1573,
                        "src": "18573:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2991,
                        "name": "_treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1770,
                        "src": "18540:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Treasury_$1561",
                          "typeString": "contract Treasury"
                        }
                      },
                      "id": 2993,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "releaseTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1208,
                      "src": "18540:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 2998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18540:49:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2999,
                  "nodeType": "ExpressionStatement",
                  "src": "18540:49:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "18660:39:12",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3000,
                        "name": "_listings",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1778,
                        "src": "18667:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Listing_$1590_storage_$",
                          "typeString": "mapping(bytes32 => struct IValidatorRegistry.Listing storage ref)"
                        }
                      },
                      "id": 3003,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3001,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18677:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 3002,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "18677:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18667:32:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Listing_$1590_storage",
                        "typeString": "struct IValidatorRegistry.Listing storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3005,
                  "nodeType": "ExpressionStatement",
                  "src": "18660:39:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3007,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2966,
                          "src": "18726:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                            "typeString": "struct IValidatorRegistry.Listing storage pointer"
                          }
                        },
                        "id": 3008,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tendermintPublicKey",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1585,
                        "src": "18726:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3006,
                      "name": "removeListingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3055,
                      "src": "18709:16:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 3009,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18709:39:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3010,
                  "nodeType": "ExpressionStatement",
                  "src": "18709:39:12"
                }
              ]
            },
            "documentation": null,
            "id": 3012,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "touchAndRemoveListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2966,
                  "name": "l",
                  "nodeType": "VariableDeclaration",
                  "scope": 3012,
                  "src": "18185:17:12",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                    "typeString": "struct IValidatorRegistry.Listing"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2965,
                    "name": "Listing",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1590,
                    "src": "18185:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                      "typeString": "struct IValidatorRegistry.Listing"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18184:19:12"
            },
            "returnParameters": {
              "id": 2968,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18213:0:12"
            },
            "scope": 3282,
            "src": "18154:601:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3054,
              "nodeType": "Block",
              "src": "18809:325:12",
              "statements": [
                {
                  "body": {
                    "id": 3052,
                    "nodeType": "Block",
                    "src": "18926:202:12",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3028,
                              "name": "_listingKeys",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1788,
                              "src": "18944:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 3030,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3029,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3018,
                              "src": "18957:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "18944:15:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3031,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3014,
                            "src": "18963:3:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "18944:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3051,
                        "nodeType": "IfStatement",
                        "src": "18940:178:12",
                        "trueBody": {
                          "id": 3050,
                          "nodeType": "Block",
                          "src": "18968:150:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3033,
                                    "name": "_listingKeys",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1788,
                                    "src": "18986:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 3035,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3034,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3018,
                                    "src": "18999:1:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18986:15:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3036,
                                    "name": "_listingKeys",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1788,
                                    "src": "19004:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 3041,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3040,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3037,
                                        "name": "_listingKeys",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1788,
                                        "src": "19017:12:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                          "typeString": "bytes32[] storage ref"
                                        }
                                      },
                                      "id": 3038,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "19017:19:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3039,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19039:1:12",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "19017:23:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19004:37:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "18986:55:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 3043,
                              "nodeType": "ExpressionStatement",
                              "src": "18986:55:12"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "19059:21:12",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3044,
                                    "name": "_listingKeys",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1788,
                                    "src": "19059:12:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 3046,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "19059:19:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3048,
                              "nodeType": "ExpressionStatement",
                              "src": "19059:21:12"
                            },
                            {
                              "id": 3049,
                              "nodeType": "Break",
                              "src": "19098:5:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3021,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3018,
                      "src": "18896:1:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3022,
                        "name": "_listingKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1788,
                        "src": "18900:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 3023,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18900:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18896:23:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3053,
                  "initializationExpression": {
                    "assignments": [
                      3018
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3018,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3053,
                        "src": "18884:6:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3017,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18884:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3020,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3019,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18893:1:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "18884:10:12"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3026,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "18921:3:12",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3025,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3018,
                        "src": "18921:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3027,
                    "nodeType": "ExpressionStatement",
                    "src": "18921:3:12"
                  },
                  "nodeType": "ForStatement",
                  "src": "18879:249:12"
                }
              ]
            },
            "documentation": null,
            "id": 3055,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeListingKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3015,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3014,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 3055,
                  "src": "18787:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3013,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18787:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18786:13:12"
            },
            "returnParameters": {
              "id": 3016,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18809:0:12"
            },
            "scope": 3282,
            "src": "18761:373:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3105,
              "nodeType": "Block",
              "src": "19242:224:12",
              "statements": [
                {
                  "assignments": [
                    3067
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3067,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3105,
                      "src": "19252:21:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3065,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19252:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3066,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19252:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3073,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 3071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19290:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "id": 3070,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19276:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3068,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19280:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3069,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19280:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19276:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19252:40:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3074,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "19302:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3076,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19307:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19302:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3077,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3057,
                      "src": "19312:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19302:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3079,
                  "nodeType": "ExpressionStatement",
                  "src": "19302:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3088,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3080,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "19341:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3082,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19346:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19341:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3085,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3059,
                              "src": "19364:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "19359:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19359:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19351:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3087,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19351:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19341:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3089,
                  "nodeType": "ExpressionStatement",
                  "src": "19341:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3090,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "19381:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3092,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3091,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19386:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19381:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3094,
                          "name": "stake",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3061,
                          "src": "19399:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19391:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3095,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19391:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19381:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3097,
                  "nodeType": "ExpressionStatement",
                  "src": "19381:24:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696461746f725265676973747279557064617465",
                        "id": 3101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19427:25:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_27cc7677144d2ef085be3d4a4ab32ee67ffb66fd445d10bc58d59bbb687cb478",
                          "typeString": "literal_string \"ValidatorRegistryUpdate\""
                        },
                        "value": "ValidatorRegistryUpdate"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3102,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3067,
                        "src": "19454:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_27cc7677144d2ef085be3d4a4ab32ee67ffb66fd445d10bc58d59bbb687cb478",
                          "typeString": "literal_string \"ValidatorRegistryUpdate\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3098,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "19415:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3100,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "19415:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19415:44:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3104,
                  "nodeType": "ExpressionStatement",
                  "src": "19415:44:12"
                }
              ]
            },
            "documentation": null,
            "id": 3106,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitValidatorRegistryUpdate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3057,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3106,
                  "src": "19177:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3056,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "19177:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3059,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3106,
                  "src": "19206:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3058,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19206:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3061,
                  "name": "stake",
                  "nodeType": "VariableDeclaration",
                  "scope": 3106,
                  "src": "19221:10:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3060,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19221:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19176:56:12"
            },
            "returnParameters": {
              "id": 3063,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19242:0:12"
            },
            "scope": 3282,
            "src": "19140:326:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3166,
              "nodeType": "Block",
              "src": "19597:270:12",
              "statements": [
                {
                  "assignments": [
                    3120
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3120,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3166,
                      "src": "19607:21:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3118,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19607:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3119,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19607:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3126,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19645:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 3123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19631:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3121,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19635:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3122,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19635:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19631:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19607:40:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3131,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3127,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19657:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3129,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19662:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19657:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3130,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3110,
                      "src": "19667:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19657:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3132,
                  "nodeType": "ExpressionStatement",
                  "src": "19657:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3133,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19696:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3135,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19701:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19696:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3137,
                          "name": "applicationBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3108,
                          "src": "19714:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19706:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3138,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19706:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19696:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3140,
                  "nodeType": "ExpressionStatement",
                  "src": "19696:35:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3141,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19741:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3143,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19746:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19741:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3146,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3112,
                              "src": "19764:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "19759:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19759:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19751:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3148,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19751:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19741:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3150,
                  "nodeType": "ExpressionStatement",
                  "src": "19741:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3157,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3151,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19781:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3153,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 3152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19786:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19781:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3155,
                          "name": "rewardRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3114,
                          "src": "19799:10:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "id": 3154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19791:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3156,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19791:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "19781:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3158,
                  "nodeType": "ExpressionStatement",
                  "src": "19781:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696461746f7252656769737465726564",
                        "id": 3162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19832:21:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_42d28feff7c695dcbe5e12444d75aea7d5cdfefed35de96c248880faf4d266fe",
                          "typeString": "literal_string \"ValidatorRegistered\""
                        },
                        "value": "ValidatorRegistered"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3163,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3120,
                        "src": "19855:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_42d28feff7c695dcbe5e12444d75aea7d5cdfefed35de96c248880faf4d266fe",
                          "typeString": "literal_string \"ValidatorRegistered\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3159,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "19820:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3161,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "19820:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19820:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3165,
                  "nodeType": "ExpressionStatement",
                  "src": "19820:40:12"
                }
              ]
            },
            "documentation": null,
            "id": 3167,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitValidatorRegistered",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3108,
                  "name": "applicationBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 3167,
                  "src": "19505:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3107,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19505:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3110,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3167,
                  "src": "19528:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3109,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "19528:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3112,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3167,
                  "src": "19557:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3111,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19557:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3114,
                  "name": "rewardRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 3167,
                  "src": "19572:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3113,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "19572:3:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19504:83:12"
            },
            "returnParameters": {
              "id": 3116,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19597:0:12"
            },
            "scope": 3282,
            "src": "19472:395:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3207,
              "nodeType": "Block",
              "src": "19941:197:12",
              "statements": [
                {
                  "assignments": [
                    3175
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3175,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3207,
                      "src": "19951:21:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3173,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19951:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3174,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19951:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3181,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19989:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 3178,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "19975:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3176,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19979:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3177,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19979:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19975:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19951:40:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3182,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3175,
                        "src": "20001:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3184,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20006:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20001:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3185,
                        "name": "l",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3169,
                        "src": "20011:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                          "typeString": "struct IValidatorRegistry.Listing storage pointer"
                        }
                      },
                      "id": 3186,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "tendermintPublicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1585,
                      "src": "20011:21:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20001:31:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3188,
                  "nodeType": "ExpressionStatement",
                  "src": "20001:31:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3189,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3175,
                        "src": "20042:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3191,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3190,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20047:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20042:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3194,
                                "name": "l",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3169,
                                "src": "20065:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                                  "typeString": "struct IValidatorRegistry.Listing storage pointer"
                                }
                              },
                              "id": 3195,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1587,
                              "src": "20065:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20060:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20060:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3192,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20052:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3197,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20052:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20042:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3199,
                  "nodeType": "ExpressionStatement",
                  "src": "20042:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696461746f72546f7563686564416e6452656d6f766564",
                        "id": 3203,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20096:28:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7a5d765316d84d02c483683113bae99c08652a181e12e609262a7f3201817d48",
                          "typeString": "literal_string \"ValidatorTouchedAndRemoved\""
                        },
                        "value": "ValidatorTouchedAndRemoved"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3204,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3175,
                        "src": "20126:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_7a5d765316d84d02c483683113bae99c08652a181e12e609262a7f3201817d48",
                          "typeString": "literal_string \"ValidatorTouchedAndRemoved\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3200,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "20084:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "20084:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20084:47:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3206,
                  "nodeType": "ExpressionStatement",
                  "src": "20084:47:12"
                }
              ]
            },
            "documentation": null,
            "id": 3208,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitValidatorTouchedAndRemoved",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3170,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3169,
                  "name": "l",
                  "nodeType": "VariableDeclaration",
                  "scope": 3208,
                  "src": "19913:17:12",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                    "typeString": "struct IValidatorRegistry.Listing"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3168,
                    "name": "Listing",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1590,
                    "src": "19913:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Listing_$1590_storage_ptr",
                      "typeString": "struct IValidatorRegistry.Listing"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19912:19:12"
            },
            "returnParameters": {
              "id": 3171,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19941:0:12"
            },
            "scope": 3282,
            "src": "19873:265:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3280,
              "nodeType": "Block",
              "src": "20281:306:12",
              "statements": [
                {
                  "assignments": [
                    3224
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3224,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 3280,
                      "src": "20291:21:12",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3222,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "20291:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3223,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "20291:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3230,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "35",
                        "id": 3228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20329:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        },
                        "value": "5"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_5_by_1",
                          "typeString": "int_const 5"
                        }
                      ],
                      "id": 3227,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "20315:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3225,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "20319:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3226,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "20319:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 3229,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20315:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20291:40:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3231,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20341:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3233,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20346:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20341:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3234,
                      "name": "tendermintPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3210,
                      "src": "20351:19:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20341:29:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3236,
                  "nodeType": "ExpressionStatement",
                  "src": "20341:29:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3237,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20380:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3239,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 3238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20385:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20380:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3242,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3212,
                              "src": "20403:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20398:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20398:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3240,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20390:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3244,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20390:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20380:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3246,
                  "nodeType": "ExpressionStatement",
                  "src": "20380:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3247,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20420:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3249,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20425:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20420:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3252,
                              "name": "challenger",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3214,
                              "src": "20443:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "20438:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 3253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20438:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20430:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3254,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20430:25:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20420:35:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3256,
                  "nodeType": "ExpressionStatement",
                  "src": "20420:35:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3257,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20465:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3259,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "33",
                        "id": 3258,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20470:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20465:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3261,
                          "name": "challengeId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3216,
                          "src": "20483:11:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20475:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20475:20:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20465:30:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3264,
                  "nodeType": "ExpressionStatement",
                  "src": "20465:30:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3265,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20505:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 3267,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 3266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20510:1:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20505:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3269,
                          "name": "pollId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3218,
                          "src": "20523:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "20515:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 3270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20515:15:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "20505:25:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3272,
                  "nodeType": "ExpressionStatement",
                  "src": "20505:25:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "56616c696461746f724368616c6c656e676564",
                        "id": 3276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20552:21:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3a1de4774600e406a24f452b440f726afeffdb9b402424fd9cb7959450987d80",
                          "typeString": "literal_string \"ValidatorChallenged\""
                        },
                        "value": "ValidatorChallenged"
                      },
                      {
                        "argumentTypes": null,
                        "id": 3277,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "20575:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_3a1de4774600e406a24f452b440f726afeffdb9b402424fd9cb7959450987d80",
                          "typeString": "literal_string \"ValidatorChallenged\""
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3273,
                        "name": "e",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "20540:1:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EventEmitter_$140",
                          "typeString": "contract EventEmitter"
                        }
                      },
                      "id": 3275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "emitEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 139,
                      "src": "20540:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,bytes32[] memory) external"
                      }
                    },
                    "id": 3278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20540:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3279,
                  "nodeType": "ExpressionStatement",
                  "src": "20540:40:12"
                }
              ]
            },
            "documentation": null,
            "id": 3281,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "emitValidatorChallenged",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3210,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20177:27:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3209,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "20177:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3212,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20206:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3211,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20206:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3214,
                  "name": "challenger",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20221:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3213,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20221:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3216,
                  "name": "challengeId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20241:16:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3215,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20241:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3218,
                  "name": "pollId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3281,
                  "src": "20259:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3217,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20259:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20176:95:12"
            },
            "returnParameters": {
              "id": 3220,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20281:0:12"
            },
            "scope": 3282,
            "src": "20144:443:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 3283,
        "src": "275:20314:12"
      }
    ],
    "src": "0:20590:12"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0xa0942aAe8D1cA011E75C294Db39c034A0766007a",
      "transactionHash": "0xef68c1311c6d5ba25bdbbbd9583afc08e347ab7a31f84ac89fa6d0e6f34d7bca"
    },
    "6174": {
      "events": {},
      "links": {},
      "address": "0xb6C14ae850Ffc04931AA395458Fe0c24594fDfaF",
      "transactionHash": "0xa1600aaefc995b7e450186dd9b4a2ca08617b6db7397c3adfd0b6749c4012143"
    }
  },
  "schemaVersion": "3.0.2",
  "updatedAt": "2019-04-04T17:37:24.681Z",
  "devdoc": {
    "author": "Freydal",
    "methods": {
      "applicationPeriod()": {
        "details": "Expose the configured applicationPeriod",
        "return": "Application period length in blocks"
      },
      "challengeListing(address,bytes32)": {
        "details": "Challenge a registered listing",
        "params": {
          "msgSender": "msg.sender from the proxy call",
          "tendermintPublicKey": "Hex encoded tendermint public key"
        }
      },
      "challengePeriod()": {
        "details": "Expose the configured challengePeriod",
        "return": "Challenge period length in blocks"
      },
      "claimRewards(bytes32)": {
        "details": "Claims rewards for a listing",
        "params": {
          "pubKey": "Public key for the listing to have rewards claimed"
        }
      },
      "claimWinnings(address,uint256)": {
        "details": "Claims winnings from a challenge",
        "params": {
          "challengeId": "Challenge id to claim rewards from."
        }
      },
      "commitPeriod()": {
        "details": "Expose the configured commitPeriod",
        "return": "Commit period length in blocks"
      },
      "confirmListing(address,bytes32)": {
        "details": "Confirm a listing registration",
        "params": {
          "msgSender": "msg.sender from the proxy call",
          "tendermintPublicKey": "Hex encoded tendermint public key"
        }
      },
      "constructor": {
        "details": "Create a new ValidatorRegistry implementation",
        "params": {
          "_events": "Deployed EventEmitter address",
          "_treasuryAddress": "Deployed Treasury address",
          "_votingAddress": "Deployed Voting address",
          "auth": "AuthorizedAddresses deployed address"
        }
      },
      "exitPeriod()": {
        "details": "Expose the configured exitPeriod",
        "return": "Exit period length in blocks"
      },
      "finalizeExit(address,bytes32)": {
        "details": "Complete a listing exit",
        "params": {
          "msgSender": "msg.sender from the proxy call",
          "tendermintPublicKey": "Hex encoded tendermint public key"
        }
      },
      "getListing(bytes32)": {
        "details": "Expose listing data",
        "params": {
          "pubKey": "Hex encoded tendermint public key"
        }
      },
      "initExit(address,bytes32)": {
        "details": "Initiate a listing exit",
        "params": {
          "msgSender": "msg.sender from the proxy call",
          "tendermintPublicKey": "Hex encoded tendermint public key"
        }
      },
      "minimumBalance()": {
        "details": "Expose the configured minimumBalance",
        "return": "Minimum token balance to list and challenge"
      },
      "registerListing(address,bytes32,uint256,int256)": {
        "details": "Register a listing",
        "params": {
          "msgSender": "msg.sender from the proxy call",
          "rewardRate": "The rate tokens are minted or destroyed over the active listings reward periods",
          "tendermintPublicKey": "Hex encoded tendermint public key",
          "tokensToStake": "The number of tokes at stake if the order is challenged"
        }
      },
      "resolveChallenge(bytes32)": {
        "details": "Resolve a challenge",
        "params": {
          "pubKey": "Hex encoded tendermint public key"
        }
      },
      "rewardPeriod()": {
        "details": "Expose the configured rewardPeriod",
        "return": "Reward period length in blocks"
      },
      "stakeholderCut()": {
        "details": "Expose the configured stakeholderCut",
        "return": "Number of tokens the stakeholder gets after a challenge"
      },
      "token()": {
        "details": "Expose the configured DigmToken",
        "return": "Configured DigmToken contract address"
      },
      "treasury()": {
        "details": "Expose the configured Treasury address",
        "return": "Configured Treasury contract address"
      },
      "validators()": {
        "details": "Expose the list of active validators",
        "return": "An array of hex encoded tendermint keys"
      },
      "voting()": {
        "details": "Expose the configured Voting contract address",
        "return": "Configured Voting contract address"
      }
    },
    "title": "ValidatorRegistry"
  },
  "userdoc": {
    "methods": {
      "applicationPeriod()": {
        "notice": "Expose the configured applicationPeriod"
      },
      "challengeListing(address,bytes32)": {
        "notice": "Challenge a registered listing"
      },
      "challengePeriod()": {
        "notice": "Expose the configured challengePeriod"
      },
      "claimRewards(bytes32)": {
        "notice": "Claims rewards for a listing"
      },
      "claimWinnings(address,uint256)": {
        "notice": "Claims winnings from a challenge"
      },
      "commitPeriod()": {
        "notice": "Expose the configured commitPeriod"
      },
      "confirmListing(address,bytes32)": {
        "notice": "Confirm a listing registration"
      },
      "constructor": "Create a new ValidatorRegistry implementation",
      "exitPeriod()": {
        "notice": "Expose the configured exitPeriod"
      },
      "finalizeExit(address,bytes32)": {
        "notice": "Complete a listing exit"
      },
      "getListing(bytes32)": {
        "notice": "Expose listing data"
      },
      "initExit(address,bytes32)": {
        "notice": "Initiate a listing exit"
      },
      "minimumBalance()": {
        "notice": "Expose the configured minimumBalance"
      },
      "registerListing(address,bytes32,uint256,int256)": {
        "notice": "Register a listing"
      },
      "resolveChallenge(bytes32)": {
        "notice": "Resolve a challenge"
      },
      "rewardPeriod()": {
        "notice": "Expose the configured rewardPeriod"
      },
      "stakeholderCut()": {
        "notice": "Expose the configured stakeholderCut"
      },
      "token()": {
        "notice": "Expose the configured DigmToken"
      },
      "treasury()": {
        "notice": "Expose the configured Treasury address"
      },
      "validators()": {
        "notice": "Expose the list of active validators"
      },
      "voting()": {
        "notice": "Expose the configured Voting contract address"
      }
    }
  }
}