{
    "contractName": "RelayRegistrar",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_relayRegistrationMaxAge",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "relayManager",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "relayHub",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32[3]",
                    "name": "relayUrl",
                    "type": "bytes32[3]"
                }
            ],
            "name": "RelayServerRegistered",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getCreationBlock",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getRelayRegistrationMaxAge",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_relayRegistrationMaxAge",
                    "type": "uint256"
                }
            ],
            "name": "setRelayRegistrationMaxAge",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "relayHub",
                    "type": "address"
                },
                {
                    "internalType": "bytes32[3]",
                    "name": "url",
                    "type": "bytes32[3]"
                }
            ],
            "name": "registerRelayServer",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "relayHub",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "relayManager",
                    "type": "address"
                }
            ],
            "name": "getRelayInfo",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint32",
                            "name": "lastSeenBlockNumber",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint40",
                            "name": "lastSeenTimestamp",
                            "type": "uint40"
                        },
                        {
                            "internalType": "uint32",
                            "name": "firstSeenBlockNumber",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint40",
                            "name": "firstSeenTimestamp",
                            "type": "uint40"
                        },
                        {
                            "internalType": "bytes32[3]",
                            "name": "urlParts",
                            "type": "bytes32[3]"
                        },
                        {
                            "internalType": "address",
                            "name": "relayManager",
                            "type": "address"
                        }
                    ],
                    "internalType": "struct IRelayRegistrar.RelayInfo",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "relayHub",
                    "type": "address"
                }
            ],
            "name": "readRelayInfos",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint32",
                            "name": "lastSeenBlockNumber",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint40",
                            "name": "lastSeenTimestamp",
                            "type": "uint40"
                        },
                        {
                            "internalType": "uint32",
                            "name": "firstSeenBlockNumber",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint40",
                            "name": "firstSeenTimestamp",
                            "type": "uint40"
                        },
                        {
                            "internalType": "bytes32[3]",
                            "name": "urlParts",
                            "type": "bytes32[3]"
                        },
                        {
                            "internalType": "address",
                            "name": "relayManager",
                            "type": "address"
                        }
                    ],
                    "internalType": "struct IRelayRegistrar.RelayInfo[]",
                    "name": "info",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "relayHub",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "oldestBlockNumber",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "oldestBlockTimestamp",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "maxCount",
                    "type": "uint256"
                }
            ],
            "name": "readRelayInfosInRange",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint32",
                            "name": "lastSeenBlockNumber",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint40",
                            "name": "lastSeenTimestamp",
                            "type": "uint40"
                        },
                        {
                            "internalType": "uint32",
                            "name": "firstSeenBlockNumber",
                            "type": "uint32"
                        },
                        {
                            "internalType": "uint40",
                            "name": "firstSeenTimestamp",
                            "type": "uint40"
                        },
                        {
                            "internalType": "bytes32[3]",
                            "name": "urlParts",
                            "type": "bytes32[3]"
                        },
                        {
                            "internalType": "address",
                            "name": "relayManager",
                            "type": "address"
                        }
                    ],
                    "internalType": "struct IRelayRegistrar.RelayInfo[]",
                    "name": "info",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_relayRegistrationMaxAge\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32[3]\",\"name\":\"relayUrl\",\"type\":\"bytes32[3]\"}],\"name\":\"RelayServerRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getCreationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"}],\"name\":\"getRelayInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"lastSeenBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"lastSeenTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"firstSeenBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"firstSeenTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"bytes32[3]\",\"name\":\"urlParts\",\"type\":\"bytes32[3]\"},{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"}],\"internalType\":\"struct IRelayRegistrar.RelayInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelayRegistrationMaxAge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"}],\"name\":\"readRelayInfos\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"lastSeenBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"lastSeenTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"firstSeenBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"firstSeenTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"bytes32[3]\",\"name\":\"urlParts\",\"type\":\"bytes32[3]\"},{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"}],\"internalType\":\"struct IRelayRegistrar.RelayInfo[]\",\"name\":\"info\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldestBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"oldestBlockTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCount\",\"type\":\"uint256\"}],\"name\":\"readRelayInfosInRange\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"lastSeenBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"lastSeenTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"firstSeenBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"firstSeenTimestamp\",\"type\":\"uint40\"},{\"internalType\":\"bytes32[3]\",\"name\":\"urlParts\",\"type\":\"bytes32[3]\"},{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"}],\"internalType\":\"struct IRelayRegistrar.RelayInfo[]\",\"name\":\"info\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"},{\"internalType\":\"bytes32[3]\",\"name\":\"url\",\"type\":\"bytes32[3]\"}],\"name\":\"registerRelayServer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_relayRegistrationMaxAge\",\"type\":\"uint256\"}],\"name\":\"setRelayRegistrationMaxAge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getCreationBlock()\":{\"returns\":{\"_0\":\"The block number in which the contract has been deployed.\"}},\"getRelayInfo(address,address)\":{\"params\":{\"relayHub\":\"The address of the `RelayHub` contract for which this action is performed.\",\"relayManager\":\"An address of a Relay Manager.\"},\"returns\":{\"_0\":\"All the details of the given Relay Manager's registration. Throws if relay not found for `RelayHub`.\"}},\"getRelayRegistrationMaxAge()\":{\"returns\":{\"_0\":\"The maximum age the relay is considered registered by default by this `RelayRegistrar`, in seconds.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"readRelayInfos(address)\":{\"params\":{\"relayHub\":\"The address of the `RelayHub` contract for which this action is performed.\"},\"returns\":{\"info\":\"The list of `RelayInfo`s of registered Relay Servers\"}},\"readRelayInfosInRange(address,uint256,uint256,uint256)\":{\"params\":{\"maxCount\":\"The maximum amount of relays to be returned by this function.\",\"oldestBlockNumber\":\"The latest block number in which a Relay Server may be registered.\",\"oldestBlockTimestamp\":\"The latest block timestamp in which a Relay Server may be registered.\",\"relayHub\":\"The address of the `RelayHub` contract for which this action is performed.\"},\"returns\":{\"info\":\"The list of `RelayInfo`s of registered Relay Servers\"}},\"registerRelayServer(address,bytes32[3])\":{\"params\":{\"relayHub\":\"The address of the `RelayHub` contract for which this action is performed.\",\"url\":\"The URL of the Relay Server that is listening to the clients' requests.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"The RelayRegistrar Implementation\",\"version\":1},\"userdoc\":{\"events\":{\"RelayServerRegistered(address,address,bytes32[3])\":{\"notice\":\"Emitted when a relay server registers or updates its details. Looking up these events allows a client to discover registered Relay Servers.\"}},\"kind\":\"user\",\"methods\":{\"readRelayInfos(address)\":{\"notice\":\"Read relay info of registered Relay Server from an on-chain storage.\"},\"readRelayInfosInRange(address,uint256,uint256,uint256)\":{\"notice\":\"Read relay info of registered Relay Server from an on-chain storage.\"},\"registerRelayServer(address,bytes32[3])\":{\"notice\":\"This function is called by Relay Servers in order to register or to update their registration.\"},\"setRelayRegistrationMaxAge(uint256)\":{\"notice\":\"Change the maximum relay registration age.\"}},\"notice\":\"Keeps a list of registered relayers.Provides view functions to read the list of registered relayers and filters out invalid ones.Protects the list from spamming entries: only staked relayers are added.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/alexf/gsn2/packages/contracts/solpp/utils/RelayRegistrar.sol\":\"RelayRegistrar\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/alexf/gsn2/packages/contracts/solpp/forwarder/IForwarder.sol\":{\"keccak256\":\"0xef3d770001c3245db4408cdd0afdfc622695ccfe31f28b74571d05158bbf83f8\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://08949174ed05b596d89c8f1eeedfeb254993b84054bbc1ff6081ad926f5db406\",\"dweb:/ipfs/QmNQtKzHpie4Esocxuc9YrPtGQyA928a1a5TWbVc7cPoqk\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayHub.sol\":{\"keccak256\":\"0x19dcbf5e1bfaa413b6800ad84ffedd2989b401cede299f009ff62c33e03ccfae\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://bb5cb7bee7de97770e374b4cad1265c636a740dc7a2013d686a89d9398ba3098\",\"dweb:/ipfs/QmSqhNkFwDtS1EnupbQWduDm78N6s8c1zqXf5aLqZF69Xx\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayRegistrar.sol\":{\"keccak256\":\"0xece9624dac85ba58f820860722fcfe7ea331159c8b3f172dd6450350fc1d35f0\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://3dae31c7fe1bbfbf7d7d73fddea3d2a5b27a15a2ec5f3bd9c17bd9e3f16caf74\",\"dweb:/ipfs/QmULwg82urTQx2fQDHYQoCve3QWJmGQXCPoMNB4Twafh1D\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IStakeManager.sol\":{\"keccak256\":\"0x27535f3677a2c373862d8672725632fdcabdf5d0e784f80c158063f55be68b5a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://904ad156bf1cac29f9e13619ee0ee41e602b6cf1fafedea0a1d3be7a7accc654\",\"dweb:/ipfs/QmXVy5gfYXSWYFrkmL2u9jctZDXupiNWbif5tFVpVZMPww\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnTypes.sol\":{\"keccak256\":\"0xfc3ed2bbd925e24facf0c3bb96d57dd7fc5bcc4a684b5473f04e8d209b758805\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://cb57b5b38d3e588f119ae45174891f2049d1d0de160a12b81a20335cd8bf731b\",\"dweb:/ipfs/Qmf6xfbdLbTKEpnzxwnSaRy1YZJtLYTZh8URqry86oyoSU\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/MinLibBytes.sol\":{\"keccak256\":\"0xa61a3d8fcd89182975d0bd17b86c22b6affd2f7bf26db66b1ddb2ee396f122ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e0bc21e2c8c2f483aee9d5bc003fa77dc7afddbaa7cc99560581a416cfdef11\",\"dweb:/ipfs/QmbwLE7AJpoH2LVeeHxewq3tf1vXhLNUdYsubWxzDGKfTr\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/RelayRegistrar.sol\":{\"keccak256\":\"0xc49f8a28cef69244eb7ed24f3714d1e2f68c1e9a5fc0a9119a38c7e2039af273\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://15e4cc935ce1df327ef2ab4ab7d7964b3c733473f1571812b6dedea4d72c4a28\",\"dweb:/ipfs/QmTzq5db15WBU3KV2VhmCJCi36kME2Rtn8zs3ZkUJ8oU98\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xd04b0f06e0666f29cf7cccc82894de541e19bb30a765b107b1e40bb7fe5f7d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b652499d098e88d8d878374616bb58434301061cae2253298b3f374044e0ddb\",\"dweb:/ipfs/QmbhAzctqo5jrSKU6idHdVyqfmzCcDbNUPvmx4GiXxfA6q\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"hardhat/console.sol\":{\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8cb8681076e765c214e0d51cac989325f6b98e315eaae06ee0cbd5a9f084763\",\"dweb:/ipfs/QmNWGHi4zmjxQTYN3NMGnJd49jBT5dE4bxTdWEaDuJrC6N\"]}},\"version\":1}",
    "bytecode": "0x60a060405234801561001057600080fd5b50604051610d06380380610d0683398101604081905261002f91610108565b6100383361004b565b6100418161009b565b5043608052610121565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100a36100a8565b600355565b6000546001600160a01b031633146101065760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561011a57600080fd5b5051919050565b608051610bcb61013b600039600060d80152610bcb6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b14610150578063953f17681461016b578063c240c4561461017e578063e04e5b4f14610191578063f2fde38b14610199578063f999ea82146101ac57600080fd5b806301ffc9a7146100ae57806320ffd56d146100d657806355fb8d6014610106578063715018a61461012657806378ae6b8714610130575b600080fd5b6100c16100bc3660046109f0565b6101bf565b60405190151581526020015b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100cd565b6101196101143660046109b7565b6101f6565b6040516100cd9190610ac3565b61012e6103cd565b005b61014361013e36600461094a565b6103e1565b6040516100cd9190610b12565b6000546040516001600160a01b0390911681526020016100cd565b61012e61017936600461097d565b610505565b61012e61018c366004610a1a565b6105bc565b6003546100f8565b61012e6101a736600461092f565b6105c9565b6101196101ba36600461092f565b610642565b60006001600160e01b03198216634302517960e01b14806101f057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b038416600090815260026020526040812080546060929084116102205783610223565b81545b67ffffffffffffffff81111561023b5761023b610b7f565b60405190808252806020026020018201604052801561027457816020015b610261610865565b8152602001906001900390816102595790505b50925060005b82548110156103c157600083828154811061029757610297610b69565b60009182526020822001546001600160a01b031691506102b78a836103e1565b905088816000015163ffffffff1610806102db575087816020015164ffffffffff16105b156102e75750506103af565b604051637371170960e11b81526001600160a01b0383811660048301528b169063e6e22e129060240160006040518083038186803b15801561032857600080fd5b505afa925050508015610339575060015b610375573d808015610367576040519150601f19603f3d011682016040523d82523d6000602084013e61036c565b606091505b505050506103af565b80868561038181610b38565b96508151811061039357610393610b69565b60200260200101819052508684106103ac5750506103c1565b50505b806103b981610b38565b91505061027a565b50825250949350505050565b6103d5610682565b6103df60006106dc565b565b6103e9610865565b6001600160a01b0383811660009081526001602081815260408084209487168452938152838320845160c081018652815463ffffffff808216835264ffffffffff6401000000008304811695840195909552600160481b82041682880152600160681b900490921660608084019190915285519081019586905293949193909260808501929084019060039082845b815481526020019060010190808311610478575050509183525050600491909101546001600160a01b0316602090910152805190915063ffffffff166104fe5760405162461bcd60e51b81526020600482015260166024820152751c995b185e53585b9859d95c881b9bdd08199bdd5b9960521b60448201526064015b60405180910390fd5b9392505050565b604051634f7de03160e01b81523360048201819052906001600160a01b03841690634f7de03190602401600060405180830381600087803b15801561054957600080fd5b505af115801561055d573d6000803e3d6000fd5b50505050826001600160a01b0316816001600160a01b03167f46962bfc4fa4f2605ce5867e8135e19bf313555ba5936b9adc4a687ceb3a92ba846040516105a49190610ab0565b60405180910390a36105b781848461072c565b505050565b6105c4610682565b600355565b6105d1610682565b6001600160a01b0381166106365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f5565b61063f816106dc565b50565b60606000429050600060035482101561065c576000610669565b6003546106699083610b21565b905061067a846000836103e86101f6565b949350505050565b6000546001600160a01b031633146103df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061073883856107ed565b8054909150600160481b900463ffffffff1661079057805471ffffffffffffffffff0000000000000000001916600160481b4363ffffffff160264ffffffffff60681b191617600160681b4264ffffffffff16021781555b80544363ffffffff1668ffffffffffffffffff19909116176401000000004264ffffffffff16021781556004810180546001600160a01b0319166001600160a01b0386161790556107e6600182018360036108a2565b5050505050565b6001600160a01b0380831660009081526001602090815260408083209385168352929052908120805463ffffffff166104fe576001600160a01b0393841660009081526002602090815260408220805460018101825590835291200180546001600160a01b0319169390941692909217909255919050565b6040805160c0810182526000808252602082018190529181018290526060810191909152608081016108956108e0565b8152600060209091015290565b82600381019282156108d0579160200282015b828111156108d05782358255916020019190600101906108b5565b506108dc9291506108fe565b5090565b60405180606001604052806003906020820280368337509192915050565b5b808211156108dc57600081556001016108ff565b80356001600160a01b038116811461092a57600080fd5b919050565b60006020828403121561094157600080fd5b6104fe82610913565b6000806040838503121561095d57600080fd5b61096683610913565b915061097460208401610913565b90509250929050565b6000806080838503121561099057600080fd5b61099983610913565b9150836080840111156109ab57600080fd5b50926020919091019150565b600080600080608085870312156109cd57600080fd5b6109d685610913565b966020860135965060408601359560600135945092505050565b600060208284031215610a0257600080fd5b81356001600160e01b0319811681146104fe57600080fd5b600060208284031215610a2c57600080fd5b5035919050565b63ffffffff80825116835260208083015164ffffffffff808216838701528360408601511660408701528060608601511660608701525050608083015191506080840160005b6003811015610a9657835182529282019290820190600101610a79565b5050505060a001516001600160a01b031660e09190910152565b6060818101908383376000815292915050565b6020808252825182820181905260009190848201906040850190845b81811015610b0657610af2838551610a33565b928401926101009290920191600101610adf565b50909695505050505050565b61010081016101f08284610a33565b600082821015610b3357610b33610b53565b500390565b6000600019821415610b4c57610b4c610b53565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212204d40c036a6bc4a5e0a8bb0065f0417a80abadd7525542778b77f18d921c99eb164736f6c63430008070033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b14610150578063953f17681461016b578063c240c4561461017e578063e04e5b4f14610191578063f2fde38b14610199578063f999ea82146101ac57600080fd5b806301ffc9a7146100ae57806320ffd56d146100d657806355fb8d6014610106578063715018a61461012657806378ae6b8714610130575b600080fd5b6100c16100bc3660046109f0565b6101bf565b60405190151581526020015b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b6040519081526020016100cd565b6101196101143660046109b7565b6101f6565b6040516100cd9190610ac3565b61012e6103cd565b005b61014361013e36600461094a565b6103e1565b6040516100cd9190610b12565b6000546040516001600160a01b0390911681526020016100cd565b61012e61017936600461097d565b610505565b61012e61018c366004610a1a565b6105bc565b6003546100f8565b61012e6101a736600461092f565b6105c9565b6101196101ba36600461092f565b610642565b60006001600160e01b03198216634302517960e01b14806101f057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b038416600090815260026020526040812080546060929084116102205783610223565b81545b67ffffffffffffffff81111561023b5761023b610b7f565b60405190808252806020026020018201604052801561027457816020015b610261610865565b8152602001906001900390816102595790505b50925060005b82548110156103c157600083828154811061029757610297610b69565b60009182526020822001546001600160a01b031691506102b78a836103e1565b905088816000015163ffffffff1610806102db575087816020015164ffffffffff16105b156102e75750506103af565b604051637371170960e11b81526001600160a01b0383811660048301528b169063e6e22e129060240160006040518083038186803b15801561032857600080fd5b505afa925050508015610339575060015b610375573d808015610367576040519150601f19603f3d011682016040523d82523d6000602084013e61036c565b606091505b505050506103af565b80868561038181610b38565b96508151811061039357610393610b69565b60200260200101819052508684106103ac5750506103c1565b50505b806103b981610b38565b91505061027a565b50825250949350505050565b6103d5610682565b6103df60006106dc565b565b6103e9610865565b6001600160a01b0383811660009081526001602081815260408084209487168452938152838320845160c081018652815463ffffffff808216835264ffffffffff6401000000008304811695840195909552600160481b82041682880152600160681b900490921660608084019190915285519081019586905293949193909260808501929084019060039082845b815481526020019060010190808311610478575050509183525050600491909101546001600160a01b0316602090910152805190915063ffffffff166104fe5760405162461bcd60e51b81526020600482015260166024820152751c995b185e53585b9859d95c881b9bdd08199bdd5b9960521b60448201526064015b60405180910390fd5b9392505050565b604051634f7de03160e01b81523360048201819052906001600160a01b03841690634f7de03190602401600060405180830381600087803b15801561054957600080fd5b505af115801561055d573d6000803e3d6000fd5b50505050826001600160a01b0316816001600160a01b03167f46962bfc4fa4f2605ce5867e8135e19bf313555ba5936b9adc4a687ceb3a92ba846040516105a49190610ab0565b60405180910390a36105b781848461072c565b505050565b6105c4610682565b600355565b6105d1610682565b6001600160a01b0381166106365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104f5565b61063f816106dc565b50565b60606000429050600060035482101561065c576000610669565b6003546106699083610b21565b905061067a846000836103e86101f6565b949350505050565b6000546001600160a01b031633146103df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104f5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061073883856107ed565b8054909150600160481b900463ffffffff1661079057805471ffffffffffffffffff0000000000000000001916600160481b4363ffffffff160264ffffffffff60681b191617600160681b4264ffffffffff16021781555b80544363ffffffff1668ffffffffffffffffff19909116176401000000004264ffffffffff16021781556004810180546001600160a01b0319166001600160a01b0386161790556107e6600182018360036108a2565b5050505050565b6001600160a01b0380831660009081526001602090815260408083209385168352929052908120805463ffffffff166104fe576001600160a01b0393841660009081526002602090815260408220805460018101825590835291200180546001600160a01b0319169390941692909217909255919050565b6040805160c0810182526000808252602082018190529181018290526060810191909152608081016108956108e0565b8152600060209091015290565b82600381019282156108d0579160200282015b828111156108d05782358255916020019190600101906108b5565b506108dc9291506108fe565b5090565b60405180606001604052806003906020820280368337509192915050565b5b808211156108dc57600081556001016108ff565b80356001600160a01b038116811461092a57600080fd5b919050565b60006020828403121561094157600080fd5b6104fe82610913565b6000806040838503121561095d57600080fd5b61096683610913565b915061097460208401610913565b90509250929050565b6000806080838503121561099057600080fd5b61099983610913565b9150836080840111156109ab57600080fd5b50926020919091019150565b600080600080608085870312156109cd57600080fd5b6109d685610913565b966020860135965060408601359560600135945092505050565b600060208284031215610a0257600080fd5b81356001600160e01b0319811681146104fe57600080fd5b600060208284031215610a2c57600080fd5b5035919050565b63ffffffff80825116835260208083015164ffffffffff808216838701528360408601511660408701528060608601511660608701525050608083015191506080840160005b6003811015610a9657835182529282019290820190600101610a79565b5050505060a001516001600160a01b031660e09190910152565b6060818101908383376000815292915050565b6020808252825182820181905260009190848201906040850190845b81811015610b0657610af2838551610a33565b928401926101009290920191600101610adf565b50909695505050505050565b61010081016101f08284610a33565b600082821015610b3357610b33610b53565b500390565b6000600019821415610b4c57610b4c610b53565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212204d40c036a6bc4a5e0a8bb0065f0417a80abadd7525542778b77f18d921c99eb164736f6c63430008070033",
    "immutableReferences": {
        "9536": [
            {
                "length": 32,
                "start": 216
            }
        ]
    },
    "sourceMap": "700:4954:44:-:0;;;1324:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:47;719:10:55;936:18:47;:32::i;:::-;1380:52:44;1407:24;1380:26;:52::i;:::-;-1:-1:-1;1458:12:44;1442:28;;700:4954;;2433:187:47;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:47;;;-1:-1:-1;;;;;;2541:17:47;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;1833:163:44:-;1094:13:47;:11;:13::i;:::-;1939:23:44::1;:50:::0;1833:163::o;1359:130:47:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:47;719:10:55;1422:23:47;1414:68;;;;-1:-1:-1;;;1414:68:47;;405:2:63;1414:68:47;;;387:21:63;;;424:18;;;417:30;483:34;463:18;;;456:62;535:18;;1414:68:47;;;;;;;;1359:130::o;14:184:63:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:63;;14:184;-1:-1:-1;14:184:63:o;203:356::-;700:4954:44;;;;;;;;;;",
    "deployedSourceMap": "700:4954:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030:232;;;;;;:::i;:::-;;:::i;:::-;;;4201:14:63;;4194:22;4176:41;;4164:2;4149:18;2030:232:44;;;;;;;;1519:105;1604:13;1519:105;;;5751:25:63;;;5739:2;5724:18;1519:105:44;5605:177:63;4463:1189:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1831:101:47:-;;;:::i;:::-;;3676:276:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1201:85:47:-;1247:7;1273:6;1201:85;;-1:-1:-1;;;;;1273:6:47;;;2994:51:63;;2982:2;2967:18;1201:85:47;2848:203:63;2304:361:44;;;;;;:::i;:::-;;:::i;1833:163::-;;;;;;:::i;:::-;;:::i;1666:125::-;1761:23;;1666:125;;2081:198:47;;;;;;:::i;:::-;;:::i;3994:427:44:-;;;;;;:::i;:::-;;:::i;2030:232::-;2132:4;-1:-1:-1;;;;;;2155:48:44;;-1:-1:-1;;;2155:48:44;;:100;;-1:-1:-1;;;;;;;;;;937:40:58;;;2219:36:44;2148:107;2030:232;-1:-1:-1;;2030:232:44:o;4463:1189::-;-1:-1:-1;;;;;4746:23:44;;4720;4746;;;:13;:23;;;;;4830:12;;4680:23;;4720;4830;-1:-1:-1;4830:49:44;;4871:8;4830:49;;;4856:12;;4830:49;4814:66;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4807:73;;4895:9;4890:714;4914:12;;4910:16;;4890:714;;;4947:20;4970:5;4976:1;4970:8;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;4970:8:44;;-1:-1:-1;5021:36:44;5034:8;4970;5021:12;:36::i;:::-;4992:65;;5124:17;5092:9;:29;;;:49;;;:119;;;;5191:20;5161:9;:27;;;:50;;;5092:119;5071:196;;;5244:8;;;;5071:196;5341:58;;-1:-1:-1;;;5341:58:44;;-1:-1:-1;;;;;3012:32:63;;;5341:58:44;;;2994:51:63;5341:44:44;;;;;2967:18:63;;5341:58:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5337:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5472:8;;;;;5337:158;5525:9;5508:4;5513:8;;;;:::i;:::-;;;5508:14;;;;;;;;:::i;:::-;;;;;;:26;;;;5562:8;5552:6;:18;5548:45;;5588:5;;;;5548:45;4933:671;;4890:714;4928:3;;;;:::i;:::-;;;;4890:714;;;-1:-1:-1;5624:20:44;;-1:-1:-1;5631:4:44;4463:1189;-1:-1:-1;;;;4463:1189:44:o;1831:101:47:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;3676:276:44:-;3768:16;;:::i;:::-;-1:-1:-1;;;;;3820:16:44;;;3796:21;3820:16;;;:6;:16;;;;;;;;:30;;;;;;;;;;;3796:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3796:54:44;;;;;;;-1:-1:-1;;;3796:54:44;;;;;;;;;;;;;;;;;;;;;;:21;;:54;;3820:30;;3796:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3796:54:44;;;-1:-1:-1;;3796:54:44;;;;;;-1:-1:-1;;;;;3796:54:44;;;;;;3868:24;;3796:54;;-1:-1:-1;3868:29:44;;3860:64;;;;-1:-1:-1;;;3860:64:44;;4837:2:63;3860:64:44;;;4819:21:63;4876:2;4856:18;;;4849:30;-1:-1:-1;;;4895:18:63;;;4888:52;4957:18;;3860:64:44;;;;;;;;;3941:4;3676:276;-1:-1:-1;;;3676:276:44:o;2304:361::-;2469:57;;-1:-1:-1;;;2469:57:44;;2449:10;2469:57;;;2994:51:63;;;2449:10:44;-1:-1:-1;;;;;2469:43:44;;;;;2967:18:63;;2469:57:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2577:8;-1:-1:-1;;;;;2541:50:44;2563:12;-1:-1:-1;;;;;2541:50:44;;2587:3;2541:50;;;;;;:::i;:::-;;;;;;;;2601:57;2630:12;2644:8;2654:3;2601:28;:57::i;:::-;2416:249;2304:361;;:::o;1833:163::-;1094:13:47;:11;:13::i;:::-;1939:23:44::1;:50:::0;1833:163::o;2081:198:47:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:47;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:47;;4430:2:63;2161:73:47::1;::::0;::::1;4412:21:63::0;4469:2;4449:18;;;4442:30;4508:34;4488:18;;;4481:62;-1:-1:-1;;;4559:18:63;;;4552:36;4605:19;;2161:73:47::1;4228:402:63::0;2161:73:47::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;3994:427:44:-;4105:23;4145:22;4170:15;4145:40;;4195:28;4244:23;;4226:14;:41;;:88;;4313:1;4226:88;;;4287:23;;4270:40;;:14;:40;:::i;:::-;4195:119;;4331:83;4353:8;4363:1;4366:20;853:4;4331:21;:83::i;:::-;4324:90;3994:427;-1:-1:-1;;;;3994:427:44:o;1359:130:47:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:47;719:10:55;1422:23:47;1414:68;;;;-1:-1:-1;;;1414:68:47;;5188:2:63;1414:68:47;;;5170:21:63;;;5207:18;;;5200:30;5266:34;5246:18;;;5239:62;5318:18;;1414:68:47;4986:356:63;2433:187:47;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:47;;;-1:-1:-1;;;;;;2541:17:47;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;2996:638:44:-;3148:29;3180:31;3188:8;3198:12;3180:7;:31::i;:::-;3225:32;;;;-1:-1:-1;;;;3225:32:44;;;;3221:193;;3278:55;;-1:-1:-1;;3347:56:44;-1:-1:-1;;;3320:12:44;3278:55;;;-1:-1:-1;;;;3347:56:44;;-1:-1:-1;;;3387:15:44;3347:56;;;;;;3221:193;3423:54;;3464:12;3423:54;;-1:-1:-1;;3487:55:44;;;;;3526:15;3487:55;;;;;;:29;3552:24;;:39;;-1:-1:-1;;;;;;3552:39:44;-1:-1:-1;;;;;3552:39:44;;;;;3601:26;-1:-1:-1;3601:20:44;;3624:3;3601:26;;:::i;:::-;;3138:496;2996:638;;;:::o;2671:319::-;-1:-1:-1;;;;;2807:16:44;;;2746:17;2807:16;;;:6;:16;;;;;;;;:30;;;;;;;;;;;2851:31;;;;2847:109;;-1:-1:-1;;;;;2903:23:44;;;;;;;:13;:23;;;;;;;:42;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2903:42:44;;;;;;;;;;;;2972:11;2671:319;-1:-1:-1;2671:319:44:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:173:63;82:20;;-1:-1:-1;;;;;131:31:63;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:327::-;741:6;749;802:3;790:9;781:7;777:23;773:33;770:53;;;819:1;816;809:12;770:53;842:29;861:9;842:29;:::i;:::-;832:39;;907:7;901:3;890:9;886:19;883:32;880:52;;;928:1;925;918:12;880:52;-1:-1:-1;648:327:63;966:2;951:18;;;;;-1:-1:-1;648:327:63:o;980:391::-;1066:6;1074;1082;1090;1143:3;1131:9;1122:7;1118:23;1114:33;1111:53;;;1160:1;1157;1150:12;1111:53;1183:29;1202:9;1183:29;:::i;:::-;1173:39;1259:2;1244:18;;1231:32;;-1:-1:-1;1310:2:63;1295:18;;1282:32;;1361:2;1346:18;1333:32;;-1:-1:-1;980:391:63;-1:-1:-1;;;980:391:63:o;1376:286::-;1434:6;1487:2;1475:9;1466:7;1462:23;1458:32;1455:52;;;1503:1;1500;1493:12;1455:52;1529:23;;-1:-1:-1;;;;;;1581:32:63;;1571:43;;1561:71;;1628:1;1625;1618:12;1667:180;1726:6;1779:2;1767:9;1758:7;1754:23;1750:32;1747:52;;;1795:1;1792;1785:12;1747:52;-1:-1:-1;1818:23:63;;1667:180;-1:-1:-1;1667:180:63:o;1961:882::-;2034:10;2083:2;2075:5;2069:12;2065:21;2060:3;2053:34;2106:4;2156:2;2149:5;2145:14;2139:21;2179:12;2239:2;2225:12;2221:21;2216:2;2211:3;2207:12;2200:43;2304:2;2296:4;2289:5;2285:16;2279:23;2275:32;2268:4;2263:3;2259:14;2252:56;2369:2;2361:4;2354:5;2350:16;2344:23;2340:32;2333:4;2328:3;2324:14;2317:56;;;2421:4;2414:5;2410:16;2404:23;2382:45;;2458:4;2453:3;2449:14;2541:1;2551:173;2565:4;2562:1;2559:11;2551:173;;;2626:13;;2612:28;;2699:15;;;;2662:14;;;;2585:1;2578:9;2551:173;;;-1:-1:-1;;;;2772:4:63;2761:16;2755:23;-1:-1:-1;;;;;1918:31:63;2831:4;2822:14;;;;1906:44;2304:361:44:o;3056:259:63:-;3238:2;3223:18;;;;3274:6;3227:9;3250:35;3307:1;3301:4;3294:15;3056:259;;;;:::o;3320:711::-;3545:2;3597:21;;;3667:13;;3570:18;;;3689:22;;;3516:4;;3545:2;3768:15;;;;3742:2;3727:18;;;3516:4;3811:194;3825:6;3822:1;3819:13;3811:194;;;3874:47;3917:3;3908:6;3902:13;3874:47;:::i;:::-;3980:15;;;;3950:6;3941:16;;;;;3847:1;3840:9;3811:194;;;-1:-1:-1;4022:3:63;;3320:711;-1:-1:-1;;;;;;3320:711:63:o;5347:253::-;5535:3;5520:19;;5548:46;5524:9;5576:6;5548:46;:::i;5787:125::-;5827:4;5855:1;5852;5849:8;5846:34;;;5860:18;;:::i;:::-;-1:-1:-1;5897:9:63;;5787:125::o;5917:135::-;5956:3;-1:-1:-1;;5977:17:63;;5974:43;;;5997:18;;:::i;:::-;-1:-1:-1;6044:1:63;6033:13;;5917:135::o;6057:127::-;6118:10;6113:3;6109:20;6106:1;6099:31;6149:4;6146:1;6139:15;6173:4;6170:1;6163:15;6189:127;6250:10;6245:3;6241:20;6238:1;6231:31;6281:4;6278:1;6271:15;6305:4;6302:1;6295:15;6321:127;6382:10;6377:3;6373:20;6370:1;6363:31;6413:4;6410:1;6403:15;6437:4;6434:1;6427:15",
    "source": "pragma solidity ^0.8.6;\n\n// solhint-disable not-rely-on-time\n//SPDX-License-Identifier: GPL-3.0-only\n\n/* solhint-disable no-inline-assembly */\n\nimport \"hardhat/console.sol\";\n\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"./MinLibBytes.sol\";\nimport \"../interfaces/IRelayHub.sol\";\nimport \"../interfaces/IRelayRegistrar.sol\";\n\n/**\n * @title The RelayRegistrar Implementation\n * @notice Keeps a list of registered relayers.\n *\n * @notice Provides view functions to read the list of registered relayers and filters out invalid ones.\n *\n * @notice Protects the list from spamming entries: only staked relayers are added.\n */\ncontract RelayRegistrar is IRelayRegistrar, Ownable, ERC165 {\n    using MinLibBytes for bytes;\n\n    uint256 private constant MAX_RELAYS_RETURNED_COUNT = 1000;\n\n    /// @notice Mapping from `RelayHub` address to a mapping from a Relay Manager address to its registration details.\n    mapping(address => mapping(address => RelayInfo)) internal values;\n\n    /// @notice Mapping from `RelayHub` address to an array of Relay Managers that are registered on that `RelayHub`.\n    mapping(address => address[]) internal indexedValues;\n\n    uint256 private immutable creationBlock;\n\n    uint256 private relayRegistrationMaxAge;\n\n    constructor(uint256 _relayRegistrationMaxAge) {\n        setRelayRegistrationMaxAge(_relayRegistrationMaxAge);\n        creationBlock = block.number;\n    }\n\n    /// @inheritdoc IRelayRegistrar\n    function getCreationBlock() external override view returns (uint256){\n        return creationBlock;\n    }\n\n    /// @inheritdoc IRelayRegistrar\n    function getRelayRegistrationMaxAge() external override view returns (uint256){\n        return relayRegistrationMaxAge;\n    }\n\n    /// @inheritdoc IRelayRegistrar\n    function setRelayRegistrationMaxAge(uint256 _relayRegistrationMaxAge) public override onlyOwner {\n        relayRegistrationMaxAge = _relayRegistrationMaxAge;\n    }\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) {\n        return interfaceId == type(IRelayRegistrar).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /// @inheritdoc IRelayRegistrar\n    function registerRelayServer(\n        address relayHub,\n        bytes32[3] calldata url\n    ) external override {\n        address relayManager = msg.sender;\n        IRelayHub(relayHub).onRelayServerRegistered(relayManager);\n        emit RelayServerRegistered(relayManager, relayHub, url);\n        storeRelayServerRegistration(relayManager, relayHub, url);\n    }\n\n    function addItem(address relayHub, address relayManager) internal returns (RelayInfo storage) {\n        RelayInfo storage storageInfo = values[relayHub][relayManager];\n        if (storageInfo.lastSeenBlockNumber == 0) {\n            indexedValues[relayHub].push(relayManager);\n        }\n        return storageInfo;\n    }\n\n    function storeRelayServerRegistration(\n        address relayManager,\n        address relayHub,\n        bytes32[3] calldata url\n    ) internal {\n        RelayInfo storage storageInfo = addItem(relayHub, relayManager);\n        if (storageInfo.firstSeenBlockNumber == 0) {\n            storageInfo.firstSeenBlockNumber = uint32(block.number);\n            storageInfo.firstSeenTimestamp = uint40(block.timestamp);\n        }\n        storageInfo.lastSeenBlockNumber = uint32(block.number);\n        storageInfo.lastSeenTimestamp = uint40(block.timestamp);\n        storageInfo.relayManager = relayManager;\n        storageInfo.urlParts = url;\n    }\n\n    /// @inheritdoc IRelayRegistrar\n    function getRelayInfo(address relayHub, address relayManager) public view override returns (RelayInfo memory) {\n        RelayInfo memory info = values[relayHub][relayManager];\n        require(info.lastSeenBlockNumber != 0, \"relayManager not found\");\n        return info;\n    }\n\n    /// @inheritdoc IRelayRegistrar\n    function readRelayInfos(\n        address relayHub\n    )\n    public\n    view\n    override\n    returns (\n        RelayInfo[] memory info\n    ) {\n        uint256 blockTimestamp = block.timestamp;\n        uint256 oldestBlockTimestamp = blockTimestamp >= relayRegistrationMaxAge ? blockTimestamp - relayRegistrationMaxAge : 0;\n        return readRelayInfosInRange(relayHub, 0, oldestBlockTimestamp, MAX_RELAYS_RETURNED_COUNT);\n    }\n\n    /// @inheritdoc IRelayRegistrar\n    function readRelayInfosInRange(\n        address relayHub,\n        uint256 oldestBlockNumber,\n        uint256 oldestBlockTimestamp,\n        uint256 maxCount\n    )\n    public\n    view\n    override\n    returns (\n        RelayInfo[] memory info\n    ) {\n        address[] storage items = indexedValues[relayHub];\n        uint256 filled = 0;\n        info = new RelayInfo[](items.length < maxCount ? items.length : maxCount);\n        for (uint256 i = 0; i < items.length; i++) {\n            address relayManager = items[i];\n            RelayInfo memory relayInfo = getRelayInfo(relayHub, relayManager);\n            if (\n                relayInfo.lastSeenBlockNumber < oldestBlockNumber ||\n                relayInfo.lastSeenTimestamp < oldestBlockTimestamp\n            ) {\n                continue;\n            }\n            // solhint-disable-next-line no-empty-blocks\n            try IRelayHub(relayHub).verifyRelayManagerStaked(relayManager) {\n            } catch (bytes memory /*lowLevelData*/) {\n                continue;\n            }\n            info[filled++] = relayInfo;\n            if (filled >= maxCount)\n                break;\n        }\n        assembly { mstore(info, filled) }\n    }\n}",
    "sourcePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/RelayRegistrar.sol",
    "ast": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/RelayRegistrar.sol",
        "exportedSymbols": {
            "Context": [
                11508
            ],
            "ERC165": [
                12146
            ],
            "GsnTypes": [
                8492
            ],
            "IERC165": [
                12352
            ],
            "IERC20": [
                10849
            ],
            "IForwarder": [
                5129
            ],
            "IRelayHub": [
                5896
            ],
            "IRelayRegistrar": [
                5994
            ],
            "IStakeManager": [
                6284
            ],
            "MinLibBytes": [
                8687
            ],
            "Ownable": [
                10182
            ],
            "RelayRegistrar": [
                9942
            ],
            "console": [
                20920
            ]
        },
        "id": 9943,
        "license": "GPL-3.0-only",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 9501,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".6"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:44"
            },
            {
                "absolutePath": "hardhat/console.sol",
                "file": "hardhat/console.sol",
                "id": 9502,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 20921,
                "src": "144:29:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                "id": 9503,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 12147,
                "src": "175:64:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                "file": "@openzeppelin/contracts/access/Ownable.sol",
                "id": 9504,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 10183,
                "src": "240:52:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/MinLibBytes.sol",
                "file": "./MinLibBytes.sol",
                "id": 9505,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 8688,
                "src": "294:27:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayHub.sol",
                "file": "../interfaces/IRelayHub.sol",
                "id": 9506,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 5897,
                "src": "322:37:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayRegistrar.sol",
                "file": "../interfaces/IRelayRegistrar.sol",
                "id": 9507,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 5995,
                "src": "360:43:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 9509,
                            "name": "IRelayRegistrar",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5994,
                            "src": "727:15:44"
                        },
                        "id": 9510,
                        "nodeType": "InheritanceSpecifier",
                        "src": "727:15:44"
                    },
                    {
                        "baseName": {
                            "id": 9511,
                            "name": "Ownable",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 10182,
                            "src": "744:7:44"
                        },
                        "id": 9512,
                        "nodeType": "InheritanceSpecifier",
                        "src": "744:7:44"
                    },
                    {
                        "baseName": {
                            "id": 9513,
                            "name": "ERC165",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12146,
                            "src": "753:6:44"
                        },
                        "id": 9514,
                        "nodeType": "InheritanceSpecifier",
                        "src": "753:6:44"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 9508,
                    "nodeType": "StructuredDocumentation",
                    "src": "405:294:44",
                    "text": " @title The RelayRegistrar Implementation\n @notice Keeps a list of registered relayers.\n @notice Provides view functions to read the list of registered relayers and filters out invalid ones.\n @notice Protects the list from spamming entries: only staked relayers are added."
                },
                "fullyImplemented": true,
                "id": 9942,
                "linearizedBaseContracts": [
                    9942,
                    12146,
                    10182,
                    11508,
                    5994,
                    12352
                ],
                "name": "RelayRegistrar",
                "nameLocation": "709:14:44",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 9517,
                        "libraryName": {
                            "id": 9515,
                            "name": "MinLibBytes",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 8687,
                            "src": "772:11:44"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "766:28:44",
                        "typeName": {
                            "id": 9516,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "788:5:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                            }
                        }
                    },
                    {
                        "constant": true,
                        "id": 9520,
                        "mutability": "constant",
                        "name": "MAX_RELAYS_RETURNED_COUNT",
                        "nameLocation": "825:25:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "800:57:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 9518,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "800:7:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "value": {
                            "hexValue": "31303030",
                            "id": 9519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "853:4:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                            },
                            "value": "1000"
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "documentation": {
                            "id": 9521,
                            "nodeType": "StructuredDocumentation",
                            "src": "864:114:44",
                            "text": "@notice Mapping from `RelayHub` address to a mapping from a Relay Manager address to its registration details."
                        },
                        "id": 9528,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "1042:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "983:65:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct IRelayRegistrar.RelayInfo))"
                        },
                        "typeName": {
                            "id": 9527,
                            "keyType": {
                                "id": 9522,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "991:7:44",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "983:49:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct IRelayRegistrar.RelayInfo))"
                            },
                            "valueType": {
                                "id": 9526,
                                "keyType": {
                                    "id": 9523,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1010:7:44",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "1002:29:44",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$",
                                    "typeString": "mapping(address => struct IRelayRegistrar.RelayInfo)"
                                },
                                "valueType": {
                                    "id": 9525,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                        "id": 9524,
                                        "name": "RelayInfo",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5917,
                                        "src": "1021:9:44"
                                    },
                                    "referencedDeclaration": 5917,
                                    "src": "1021:9:44",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo"
                                    }
                                }
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "documentation": {
                            "id": 9529,
                            "nodeType": "StructuredDocumentation",
                            "src": "1055:113:44",
                            "text": "@notice Mapping from `RelayHub` address to an array of Relay Managers that are registered on that `RelayHub`."
                        },
                        "id": 9534,
                        "mutability": "mutable",
                        "name": "indexedValues",
                        "nameLocation": "1212:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "1173:52:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(address => address[])"
                        },
                        "typeName": {
                            "id": 9533,
                            "keyType": {
                                "id": 9530,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1181:7:44",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1173:29:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                "typeString": "mapping(address => address[])"
                            },
                            "valueType": {
                                "baseType": {
                                    "id": 9531,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1192:7:44",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "id": 9532,
                                "nodeType": "ArrayTypeName",
                                "src": "1192:9:44",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[]"
                                }
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 9536,
                        "mutability": "immutable",
                        "name": "creationBlock",
                        "nameLocation": "1258:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "1232:39:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 9535,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1232:7:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 9538,
                        "mutability": "mutable",
                        "name": "relayRegistrationMaxAge",
                        "nameLocation": "1294:23:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "1278:39:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 9537,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1278:7:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 9552,
                            "nodeType": "Block",
                            "src": "1370:107:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 9544,
                                                "name": "_relayRegistrationMaxAge",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9540,
                                                "src": "1407:24:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 9543,
                                            "name": "setRelayRegistrationMaxAge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9587,
                                            "src": "1380:26:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                                "typeString": "function (uint256)"
                                            }
                                        },
                                        "id": 9545,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1380:52:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9546,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1380:52:44"
                                },
                                {
                                    "expression": {
                                        "id": 9550,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 9547,
                                            "name": "creationBlock",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9536,
                                            "src": "1442:13:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "id": 9548,
                                                "name": "block",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967292,
                                                "src": "1458:5:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_block",
                                                    "typeString": "block"
                                                }
                                            },
                                            "id": 9549,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "number",
                                            "nodeType": "MemberAccess",
                                            "src": "1458:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1442:28:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 9551,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1442:28:44"
                                }
                            ]
                        },
                        "id": 9553,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 9541,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9540,
                                    "mutability": "mutable",
                                    "name": "_relayRegistrationMaxAge",
                                    "nameLocation": "1344:24:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9553,
                                    "src": "1336:32:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9539,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1336:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1335:34:44"
                        },
                        "returnParameters": {
                            "id": 9542,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1370:0:44"
                        },
                        "scope": 9942,
                        "src": "1324:153:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5944
                        ],
                        "body": {
                            "id": 9562,
                            "nodeType": "Block",
                            "src": "1587:37:44",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 9560,
                                        "name": "creationBlock",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9536,
                                        "src": "1604:13:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 9559,
                                    "id": 9561,
                                    "nodeType": "Return",
                                    "src": "1597:20:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9554,
                            "nodeType": "StructuredDocumentation",
                            "src": "1483:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "20ffd56d",
                        "id": 9563,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getCreationBlock",
                        "nameLocation": "1528:16:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9556,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1556:8:44"
                        },
                        "parameters": {
                            "id": 9555,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1544:2:44"
                        },
                        "returnParameters": {
                            "id": 9559,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9558,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9563,
                                    "src": "1579:7:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9557,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1579:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1578:9:44"
                        },
                        "scope": 9942,
                        "src": "1519:105:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            5950
                        ],
                        "body": {
                            "id": 9572,
                            "nodeType": "Block",
                            "src": "1744:47:44",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 9570,
                                        "name": "relayRegistrationMaxAge",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9538,
                                        "src": "1761:23:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 9569,
                                    "id": 9571,
                                    "nodeType": "Return",
                                    "src": "1754:30:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9564,
                            "nodeType": "StructuredDocumentation",
                            "src": "1630:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "e04e5b4f",
                        "id": 9573,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRelayRegistrationMaxAge",
                        "nameLocation": "1675:26:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9566,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1713:8:44"
                        },
                        "parameters": {
                            "id": 9565,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1701:2:44"
                        },
                        "returnParameters": {
                            "id": 9569,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9568,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9573,
                                    "src": "1736:7:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9567,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1736:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1735:9:44"
                        },
                        "scope": 9942,
                        "src": "1666:125:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            5956
                        ],
                        "body": {
                            "id": 9586,
                            "nodeType": "Block",
                            "src": "1929:67:44",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 9584,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 9582,
                                            "name": "relayRegistrationMaxAge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9538,
                                            "src": "1939:23:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 9583,
                                            "name": "_relayRegistrationMaxAge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9576,
                                            "src": "1965:24:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1939:50:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 9585,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1939:50:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9574,
                            "nodeType": "StructuredDocumentation",
                            "src": "1797:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "c240c456",
                        "id": 9587,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 9580,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 9579,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 10101,
                                    "src": "1919:9:44"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1919:9:44"
                            }
                        ],
                        "name": "setRelayRegistrationMaxAge",
                        "nameLocation": "1842:26:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9578,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1910:8:44"
                        },
                        "parameters": {
                            "id": 9577,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9576,
                                    "mutability": "mutable",
                                    "name": "_relayRegistrationMaxAge",
                                    "nameLocation": "1877:24:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9587,
                                    "src": "1869:32:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9575,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1869:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1868:34:44"
                        },
                        "returnParameters": {
                            "id": 9581,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1929:0:44"
                        },
                        "scope": 9942,
                        "src": "1833:163:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            12145,
                            12351
                        ],
                        "body": {
                            "id": 9610,
                            "nodeType": "Block",
                            "src": "2138:124:44",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 9608,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            },
                                            "id": 9603,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 9598,
                                                "name": "interfaceId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9590,
                                                "src": "2155:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9600,
                                                            "name": "IRelayRegistrar",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5994,
                                                            "src": "2175:15:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IRelayRegistrar_$5994_$",
                                                                "typeString": "type(contract IRelayRegistrar)"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_type$_t_contract$_IRelayRegistrar_$5994_$",
                                                                "typeString": "type(contract IRelayRegistrar)"
                                                            }
                                                        ],
                                                        "id": 9599,
                                                        "name": "type",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967269,
                                                        "src": "2170:4:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                            "typeString": "function () pure"
                                                        }
                                                    },
                                                    "id": 9601,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2170:21:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IRelayRegistrar_$5994",
                                                        "typeString": "type(contract IRelayRegistrar)"
                                                    }
                                                },
                                                "id": 9602,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "interfaceId",
                                                "nodeType": "MemberAccess",
                                                "src": "2170:33:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                }
                                            },
                                            "src": "2155:48:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "id": 9606,
                                                    "name": "interfaceId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9590,
                                                    "src": "2243:11:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 9604,
                                                    "name": "super",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967271,
                                                    "src": "2219:5:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_super$_RelayRegistrar_$9942_$",
                                                        "typeString": "type(contract super RelayRegistrar)"
                                                    }
                                                },
                                                "id": 9605,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "supportsInterface",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12145,
                                                "src": "2219:23:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                                    "typeString": "function (bytes4) view returns (bool)"
                                                }
                                            },
                                            "id": 9607,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2219:36:44",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "2155:100:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 9597,
                                    "id": 9609,
                                    "nodeType": "Return",
                                    "src": "2148:107:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9588,
                            "nodeType": "StructuredDocumentation",
                            "src": "2002:23:44",
                            "text": "@inheritdoc IERC165"
                        },
                        "functionSelector": "01ffc9a7",
                        "id": 9611,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "supportsInterface",
                        "nameLocation": "2039:17:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9594,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [
                                {
                                    "id": 9592,
                                    "name": "IERC165",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 12352,
                                    "src": "2106:7:44"
                                },
                                {
                                    "id": 9593,
                                    "name": "ERC165",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 12146,
                                    "src": "2115:6:44"
                                }
                            ],
                            "src": "2097:25:44"
                        },
                        "parameters": {
                            "id": 9591,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9590,
                                    "mutability": "mutable",
                                    "name": "interfaceId",
                                    "nameLocation": "2064:11:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9611,
                                    "src": "2057:18:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                    },
                                    "typeName": {
                                        "id": 9589,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2057:6:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2056:20:44"
                        },
                        "returnParameters": {
                            "id": 9597,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9596,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9611,
                                    "src": "2132:4:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 9595,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2132:4:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2131:6:44"
                        },
                        "scope": 9942,
                        "src": "2030:232:44",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5938
                        ],
                        "body": {
                            "id": 9646,
                            "nodeType": "Block",
                            "src": "2416:249:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9623
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9623,
                                            "mutability": "mutable",
                                            "name": "relayManager",
                                            "nameLocation": "2434:12:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9646,
                                            "src": "2426:20:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 9622,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2426:7:44",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9626,
                                    "initialValue": {
                                        "expression": {
                                            "id": 9624,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967281,
                                            "src": "2449:3:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 9625,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "2449:10:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2426:33:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 9631,
                                                "name": "relayManager",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9623,
                                                "src": "2513:12:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 9628,
                                                        "name": "relayHub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9614,
                                                        "src": "2479:8:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 9627,
                                                    "name": "IRelayHub",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5896,
                                                    "src": "2469:9:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IRelayHub_$5896_$",
                                                        "typeString": "type(contract IRelayHub)"
                                                    }
                                                },
                                                "id": 9629,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2469:19:44",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            },
                                            "id": 9630,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "onRelayServerRegistered",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5681,
                                            "src": "2469:43:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address) external"
                                            }
                                        },
                                        "id": 9632,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2469:57:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9633,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2469:57:44"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 9635,
                                                "name": "relayManager",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9623,
                                                "src": "2563:12:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9636,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9614,
                                                "src": "2577:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9637,
                                                "name": "url",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9618,
                                                "src": "2587:3:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                    "typeString": "bytes32[3] calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                    "typeString": "bytes32[3] calldata"
                                                }
                                            ],
                                            "id": 9634,
                                            "name": "RelayServerRegistered",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5928,
                                            "src": "2541:21:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_bytes32_$3_memory_ptr_$returns$__$",
                                                "typeString": "function (address,address,bytes32[3] memory)"
                                            }
                                        },
                                        "id": 9638,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2541:50:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9639,
                                    "nodeType": "EmitStatement",
                                    "src": "2536:55:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 9641,
                                                "name": "relayManager",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9623,
                                                "src": "2630:12:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9642,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9614,
                                                "src": "2644:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9643,
                                                "name": "url",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9618,
                                                "src": "2654:3:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                    "typeString": "bytes32[3] calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                    "typeString": "bytes32[3] calldata"
                                                }
                                            ],
                                            "id": 9640,
                                            "name": "storeRelayServerRegistration",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9760,
                                            "src": "2601:28:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_bytes32_$3_calldata_ptr_$returns$__$",
                                                "typeString": "function (address,address,bytes32[3] calldata)"
                                            }
                                        },
                                        "id": 9644,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2601:57:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9645,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2601:57:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9612,
                            "nodeType": "StructuredDocumentation",
                            "src": "2268:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "953f1768",
                        "id": 9647,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "registerRelayServer",
                        "nameLocation": "2313:19:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9620,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2407:8:44"
                        },
                        "parameters": {
                            "id": 9619,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9614,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "2350:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9647,
                                    "src": "2342:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9613,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2342:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9618,
                                    "mutability": "mutable",
                                    "name": "url",
                                    "nameLocation": "2388:3:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9647,
                                    "src": "2368:23:44",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                        "typeString": "bytes32[3]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 9615,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2368:7:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "id": 9617,
                                        "length": {
                                            "hexValue": "33",
                                            "id": 9616,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2376:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                        },
                                        "nodeType": "ArrayTypeName",
                                        "src": "2368:10:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                                            "typeString": "bytes32[3]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2332:65:44"
                        },
                        "returnParameters": {
                            "id": 9621,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2416:0:44"
                        },
                        "scope": 9942,
                        "src": "2304:361:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 9681,
                            "nodeType": "Block",
                            "src": "2765:225:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9659
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9659,
                                            "mutability": "mutable",
                                            "name": "storageInfo",
                                            "nameLocation": "2793:11:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9681,
                                            "src": "2775:29:44",
                                            "stateVariable": false,
                                            "storageLocation": "storage",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            },
                                            "typeName": {
                                                "id": 9658,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 9657,
                                                    "name": "RelayInfo",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5917,
                                                    "src": "2775:9:44"
                                                },
                                                "referencedDeclaration": 5917,
                                                "src": "2775:9:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9665,
                                    "initialValue": {
                                        "baseExpression": {
                                            "baseExpression": {
                                                "id": 9660,
                                                "name": "values",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9528,
                                                "src": "2807:6:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$_$",
                                                    "typeString": "mapping(address => mapping(address => struct IRelayRegistrar.RelayInfo storage ref))"
                                                }
                                            },
                                            "id": 9662,
                                            "indexExpression": {
                                                "id": 9661,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9649,
                                                "src": "2814:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2807:16:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$",
                                                "typeString": "mapping(address => struct IRelayRegistrar.RelayInfo storage ref)"
                                            }
                                        },
                                        "id": 9664,
                                        "indexExpression": {
                                            "id": 9663,
                                            "name": "relayManager",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9651,
                                            "src": "2824:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2807:30:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage",
                                            "typeString": "struct IRelayRegistrar.RelayInfo storage ref"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2775:62:44"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        },
                                        "id": 9669,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 9666,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9659,
                                                "src": "2851:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9667,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lastSeenBlockNumber",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5904,
                                            "src": "2851:31:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 9668,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2886:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "2851:36:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 9678,
                                    "nodeType": "IfStatement",
                                    "src": "2847:109:44",
                                    "trueBody": {
                                        "id": 9677,
                                        "nodeType": "Block",
                                        "src": "2889:67:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9674,
                                                            "name": "relayManager",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9651,
                                                            "src": "2932:12:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 9670,
                                                                "name": "indexedValues",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9534,
                                                                "src": "2903:13:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                }
                                                            },
                                                            "id": 9672,
                                                            "indexExpression": {
                                                                "id": 9671,
                                                                "name": "relayHub",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9649,
                                                                "src": "2917:8:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "2903:23:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                "typeString": "address[] storage ref"
                                                            }
                                                        },
                                                        "id": 9673,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "2903:28:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                                            "typeString": "function (address[] storage pointer,address)"
                                                        }
                                                    },
                                                    "id": 9675,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2903:42:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9676,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2903:42:44"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 9679,
                                        "name": "storageInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9659,
                                        "src": "2972:11:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                        }
                                    },
                                    "functionReturnParameters": 9656,
                                    "id": 9680,
                                    "nodeType": "Return",
                                    "src": "2965:18:44"
                                }
                            ]
                        },
                        "id": 9682,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "addItem",
                        "nameLocation": "2680:7:44",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 9652,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9649,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "2696:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9682,
                                    "src": "2688:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9648,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2688:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9651,
                                    "mutability": "mutable",
                                    "name": "relayManager",
                                    "nameLocation": "2714:12:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9682,
                                    "src": "2706:20:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9650,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2706:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2687:40:44"
                        },
                        "returnParameters": {
                            "id": 9656,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9655,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9682,
                                    "src": "2746:17:44",
                                    "stateVariable": false,
                                    "storageLocation": "storage",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo"
                                    },
                                    "typeName": {
                                        "id": 9654,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 9653,
                                            "name": "RelayInfo",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5917,
                                            "src": "2746:9:44"
                                        },
                                        "referencedDeclaration": 5917,
                                        "src": "2746:9:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2745:19:44"
                        },
                        "scope": 9942,
                        "src": "2671:319:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 9759,
                            "nodeType": "Block",
                            "src": "3138:496:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9695
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9695,
                                            "mutability": "mutable",
                                            "name": "storageInfo",
                                            "nameLocation": "3166:11:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9759,
                                            "src": "3148:29:44",
                                            "stateVariable": false,
                                            "storageLocation": "storage",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            },
                                            "typeName": {
                                                "id": 9694,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 9693,
                                                    "name": "RelayInfo",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5917,
                                                    "src": "3148:9:44"
                                                },
                                                "referencedDeclaration": 5917,
                                                "src": "3148:9:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9700,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 9697,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9686,
                                                "src": "3188:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9698,
                                                "name": "relayManager",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9684,
                                                "src": "3198:12:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 9696,
                                            "name": "addItem",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9682,
                                            "src": "3180:7:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_struct$_RelayInfo_$5917_storage_ptr_$",
                                                "typeString": "function (address,address) returns (struct IRelayRegistrar.RelayInfo storage pointer)"
                                            }
                                        },
                                        "id": 9699,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3180:31:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3148:63:44"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        },
                                        "id": 9704,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 9701,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3225:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9702,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "firstSeenBlockNumber",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5908,
                                            "src": "3225:32:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 9703,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3261:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "3225:37:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 9726,
                                    "nodeType": "IfStatement",
                                    "src": "3221:193:44",
                                    "trueBody": {
                                        "id": 9725,
                                        "nodeType": "Block",
                                        "src": "3264:150:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 9713,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "id": 9705,
                                                            "name": "storageInfo",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9695,
                                                            "src": "3278:11:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                                "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                            }
                                                        },
                                                        "id": 9707,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "firstSeenBlockNumber",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5908,
                                                        "src": "3278:32:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 9710,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967292,
                                                                    "src": "3320:5:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 9711,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "number",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3320:12:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 9709,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "3313:6:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint32_$",
                                                                "typeString": "type(uint32)"
                                                            },
                                                            "typeName": {
                                                                "id": 9708,
                                                                "name": "uint32",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "3313:6:44",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 9712,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3313:20:44",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "src": "3278:55:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "id": 9714,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3278:55:44"
                                            },
                                            {
                                                "expression": {
                                                    "id": 9723,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "id": 9715,
                                                            "name": "storageInfo",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9695,
                                                            "src": "3347:11:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                                "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                            }
                                                        },
                                                        "id": 9717,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "firstSeenTimestamp",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5910,
                                                        "src": "3347:30:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint40",
                                                            "typeString": "uint40"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 9720,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967292,
                                                                    "src": "3387:5:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 9721,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "timestamp",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3387:15:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 9719,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "3380:6:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint40_$",
                                                                "typeString": "type(uint40)"
                                                            },
                                                            "typeName": {
                                                                "id": 9718,
                                                                "name": "uint40",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "3380:6:44",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 9722,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3380:23:44",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint40",
                                                            "typeString": "uint40"
                                                        }
                                                    },
                                                    "src": "3347:56:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint40",
                                                        "typeString": "uint40"
                                                    }
                                                },
                                                "id": 9724,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3347:56:44"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 9735,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 9727,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3423:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9729,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "lastSeenBlockNumber",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5904,
                                            "src": "3423:31:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "expression": {
                                                        "id": 9732,
                                                        "name": "block",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967292,
                                                        "src": "3464:5:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_block",
                                                            "typeString": "block"
                                                        }
                                                    },
                                                    "id": 9733,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "number",
                                                    "nodeType": "MemberAccess",
                                                    "src": "3464:12:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "id": 9731,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3457:6:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint32_$",
                                                    "typeString": "type(uint32)"
                                                },
                                                "typeName": {
                                                    "id": 9730,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3457:6:44",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 9734,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3457:20:44",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            }
                                        },
                                        "src": "3423:54:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        }
                                    },
                                    "id": 9736,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3423:54:44"
                                },
                                {
                                    "expression": {
                                        "id": 9745,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 9737,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3487:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9739,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "lastSeenTimestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5906,
                                            "src": "3487:29:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint40",
                                                "typeString": "uint40"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "expression": {
                                                        "id": 9742,
                                                        "name": "block",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967292,
                                                        "src": "3526:5:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_block",
                                                            "typeString": "block"
                                                        }
                                                    },
                                                    "id": 9743,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "timestamp",
                                                    "nodeType": "MemberAccess",
                                                    "src": "3526:15:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "id": 9741,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3519:6:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint40_$",
                                                    "typeString": "type(uint40)"
                                                },
                                                "typeName": {
                                                    "id": 9740,
                                                    "name": "uint40",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3519:6:44",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 9744,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3519:23:44",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint40",
                                                "typeString": "uint40"
                                            }
                                        },
                                        "src": "3487:55:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint40",
                                            "typeString": "uint40"
                                        }
                                    },
                                    "id": 9746,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3487:55:44"
                                },
                                {
                                    "expression": {
                                        "id": 9751,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 9747,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3552:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9749,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "relayManager",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5916,
                                            "src": "3552:24:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 9750,
                                            "name": "relayManager",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9684,
                                            "src": "3579:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3552:39:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 9752,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3552:39:44"
                                },
                                {
                                    "expression": {
                                        "id": 9757,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 9753,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3601:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9755,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "urlParts",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5914,
                                            "src": "3601:20:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes32_$3_storage",
                                                "typeString": "bytes32[3] storage ref"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 9756,
                                            "name": "url",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9690,
                                            "src": "3624:3:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                "typeString": "bytes32[3] calldata"
                                            }
                                        },
                                        "src": "3601:26:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$3_storage",
                                            "typeString": "bytes32[3] storage ref"
                                        }
                                    },
                                    "id": 9758,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3601:26:44"
                                }
                            ]
                        },
                        "id": 9760,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "storeRelayServerRegistration",
                        "nameLocation": "3005:28:44",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 9691,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9684,
                                    "mutability": "mutable",
                                    "name": "relayManager",
                                    "nameLocation": "3051:12:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9760,
                                    "src": "3043:20:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9683,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3043:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9686,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "3081:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9760,
                                    "src": "3073:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9685,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3073:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9690,
                                    "mutability": "mutable",
                                    "name": "url",
                                    "nameLocation": "3119:3:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9760,
                                    "src": "3099:23:44",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                        "typeString": "bytes32[3]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 9687,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3099:7:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "id": 9689,
                                        "length": {
                                            "hexValue": "33",
                                            "id": 9688,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3107:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                        },
                                        "nodeType": "ArrayTypeName",
                                        "src": "3099:10:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                                            "typeString": "bytes32[3]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3033:95:44"
                        },
                        "returnParameters": {
                            "id": 9692,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3138:0:44"
                        },
                        "scope": 9942,
                        "src": "2996:638:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "baseFunctions": [
                            5967
                        ],
                        "body": {
                            "id": 9791,
                            "nodeType": "Block",
                            "src": "3786:166:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9774
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9774,
                                            "mutability": "mutable",
                                            "name": "info",
                                            "nameLocation": "3813:4:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9791,
                                            "src": "3796:21:44",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            },
                                            "typeName": {
                                                "id": 9773,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 9772,
                                                    "name": "RelayInfo",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5917,
                                                    "src": "3796:9:44"
                                                },
                                                "referencedDeclaration": 5917,
                                                "src": "3796:9:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9780,
                                    "initialValue": {
                                        "baseExpression": {
                                            "baseExpression": {
                                                "id": 9775,
                                                "name": "values",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9528,
                                                "src": "3820:6:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$_$",
                                                    "typeString": "mapping(address => mapping(address => struct IRelayRegistrar.RelayInfo storage ref))"
                                                }
                                            },
                                            "id": 9777,
                                            "indexExpression": {
                                                "id": 9776,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9763,
                                                "src": "3827:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3820:16:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$",
                                                "typeString": "mapping(address => struct IRelayRegistrar.RelayInfo storage ref)"
                                            }
                                        },
                                        "id": 9779,
                                        "indexExpression": {
                                            "id": 9778,
                                            "name": "relayManager",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9765,
                                            "src": "3837:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3820:30:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage",
                                            "typeString": "struct IRelayRegistrar.RelayInfo storage ref"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3796:54:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "id": 9785,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "id": 9782,
                                                        "name": "info",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9774,
                                                        "src": "3868:4:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                        }
                                                    },
                                                    "id": 9783,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "lastSeenBlockNumber",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 5904,
                                                    "src": "3868:24:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 9784,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3896:1:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "3868:29:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "72656c61794d616e61676572206e6f7420666f756e64",
                                                "id": 9786,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3899:24:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_967f2bafcd8989d8e38fea9dc576dcb6f54835fd1258aa050009ec28d4002f12",
                                                    "typeString": "literal_string \"relayManager not found\""
                                                },
                                                "value": "relayManager not found"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_967f2bafcd8989d8e38fea9dc576dcb6f54835fd1258aa050009ec28d4002f12",
                                                    "typeString": "literal_string \"relayManager not found\""
                                                }
                                            ],
                                            "id": 9781,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "3860:7:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 9787,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3860:64:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9788,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3860:64:44"
                                },
                                {
                                    "expression": {
                                        "id": 9789,
                                        "name": "info",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9774,
                                        "src": "3941:4:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                        }
                                    },
                                    "functionReturnParameters": 9771,
                                    "id": 9790,
                                    "nodeType": "Return",
                                    "src": "3934:11:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9761,
                            "nodeType": "StructuredDocumentation",
                            "src": "3640:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "78ae6b87",
                        "id": 9792,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRelayInfo",
                        "nameLocation": "3685:12:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9767,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "3750:8:44"
                        },
                        "parameters": {
                            "id": 9766,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9763,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "3706:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9792,
                                    "src": "3698:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9762,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3698:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9765,
                                    "mutability": "mutable",
                                    "name": "relayManager",
                                    "nameLocation": "3724:12:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9792,
                                    "src": "3716:20:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9764,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3716:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3697:40:44"
                        },
                        "returnParameters": {
                            "id": 9771,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9770,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9792,
                                    "src": "3768:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo"
                                    },
                                    "typeName": {
                                        "id": 9769,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 9768,
                                            "name": "RelayInfo",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5917,
                                            "src": "3768:9:44"
                                        },
                                        "referencedDeclaration": 5917,
                                        "src": "3768:9:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3767:18:44"
                        },
                        "scope": 9942,
                        "src": "3676:276:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5977
                        ],
                        "body": {
                            "id": 9826,
                            "nodeType": "Block",
                            "src": "4135:286:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9804
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9804,
                                            "mutability": "mutable",
                                            "name": "blockTimestamp",
                                            "nameLocation": "4153:14:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9826,
                                            "src": "4145:22:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 9803,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4145:7:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9807,
                                    "initialValue": {
                                        "expression": {
                                            "id": 9805,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967292,
                                            "src": "4170:5:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_block",
                                                "typeString": "block"
                                            }
                                        },
                                        "id": 9806,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "4170:15:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4145:40:44"
                                },
                                {
                                    "assignments": [
                                        9809
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9809,
                                            "mutability": "mutable",
                                            "name": "oldestBlockTimestamp",
                                            "nameLocation": "4203:20:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9826,
                                            "src": "4195:28:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 9808,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4195:7:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9818,
                                    "initialValue": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 9812,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 9810,
                                                "name": "blockTimestamp",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9804,
                                                "src": "4226:14:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">=",
                                            "rightExpression": {
                                                "id": 9811,
                                                "name": "relayRegistrationMaxAge",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9538,
                                                "src": "4244:23:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "4226:41:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "hexValue": "30",
                                            "id": 9816,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4313:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "id": 9817,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "4226:88:44",
                                        "trueExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 9815,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 9813,
                                                "name": "blockTimestamp",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9804,
                                                "src": "4270:14:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                                "id": 9814,
                                                "name": "relayRegistrationMaxAge",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9538,
                                                "src": "4287:23:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "4270:40:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4195:119:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 9820,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9795,
                                                "src": "4353:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "hexValue": "30",
                                                "id": 9821,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4363:1:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            {
                                                "id": 9822,
                                                "name": "oldestBlockTimestamp",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9809,
                                                "src": "4366:20:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 9823,
                                                "name": "MAX_RELAYS_RETURNED_COUNT",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9520,
                                                "src": "4388:25:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 9819,
                                            "name": "readRelayInfosInRange",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9941,
                                            "src": "4331:21:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr_$",
                                                "typeString": "function (address,uint256,uint256,uint256) view returns (struct IRelayRegistrar.RelayInfo memory[] memory)"
                                            }
                                        },
                                        "id": 9824,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4331:83:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                        }
                                    },
                                    "functionReturnParameters": 9802,
                                    "id": 9825,
                                    "nodeType": "Return",
                                    "src": "4324:90:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9793,
                            "nodeType": "StructuredDocumentation",
                            "src": "3958:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "f999ea82",
                        "id": 9827,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "readRelayInfos",
                        "nameLocation": "4003:14:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9797,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "4074:8:44"
                        },
                        "parameters": {
                            "id": 9796,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9795,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "4035:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9827,
                                    "src": "4027:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9794,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4027:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4017:32:44"
                        },
                        "returnParameters": {
                            "id": 9802,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9801,
                                    "mutability": "mutable",
                                    "name": "info",
                                    "nameLocation": "4124:4:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9827,
                                    "src": "4105:23:44",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 9799,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 9798,
                                                "name": "RelayInfo",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5917,
                                                "src": "4105:9:44"
                                            },
                                            "referencedDeclaration": 5917,
                                            "src": "4105:9:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            }
                                        },
                                        "id": 9800,
                                        "nodeType": "ArrayTypeName",
                                        "src": "4105:11:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_storage_$dyn_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4095:39:44"
                        },
                        "scope": 9942,
                        "src": "3994:427:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5993
                        ],
                        "body": {
                            "id": 9940,
                            "nodeType": "Block",
                            "src": "4710:942:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9848
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9848,
                                            "mutability": "mutable",
                                            "name": "items",
                                            "nameLocation": "4738:5:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9940,
                                            "src": "4720:23:44",
                                            "stateVariable": false,
                                            "storageLocation": "storage",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                "typeString": "address[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 9846,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4720:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 9847,
                                                "nodeType": "ArrayTypeName",
                                                "src": "4720:9:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9852,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 9849,
                                            "name": "indexedValues",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9534,
                                            "src": "4746:13:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                "typeString": "mapping(address => address[] storage ref)"
                                            }
                                        },
                                        "id": 9851,
                                        "indexExpression": {
                                            "id": 9850,
                                            "name": "relayHub",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9830,
                                            "src": "4760:8:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4746:23:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4720:49:44"
                                },
                                {
                                    "assignments": [
                                        9854
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9854,
                                            "mutability": "mutable",
                                            "name": "filled",
                                            "nameLocation": "4787:6:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9940,
                                            "src": "4779:14:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 9853,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4779:7:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9856,
                                    "initialValue": {
                                        "hexValue": "30",
                                        "id": 9855,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4796:1:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4779:18:44"
                                },
                                {
                                    "expression": {
                                        "id": 9871,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 9857,
                                            "name": "info",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9842,
                                            "src": "4807:4:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 9865,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 9862,
                                                                "name": "items",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9848,
                                                                "src": "4830:5:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                                    "typeString": "address[] storage pointer"
                                                                }
                                                            },
                                                            "id": 9863,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "length",
                                                            "nodeType": "MemberAccess",
                                                            "src": "4830:12:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "id": 9864,
                                                            "name": "maxCount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9836,
                                                            "src": "4845:8:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4830:23:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 9868,
                                                        "name": "maxCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9836,
                                                        "src": "4871:8:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 9869,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "4830:49:44",
                                                    "trueExpression": {
                                                        "expression": {
                                                            "id": 9866,
                                                            "name": "items",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9848,
                                                            "src": "4856:5:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                                "typeString": "address[] storage pointer"
                                                            }
                                                        },
                                                        "id": 9867,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4856:12:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "id": 9861,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "NewExpression",
                                                "src": "4814:15:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr_$",
                                                    "typeString": "function (uint256) pure returns (struct IRelayRegistrar.RelayInfo memory[] memory)"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 9859,
                                                        "nodeType": "UserDefinedTypeName",
                                                        "pathNode": {
                                                            "id": 9858,
                                                            "name": "RelayInfo",
                                                            "nodeType": "IdentifierPath",
                                                            "referencedDeclaration": 5917,
                                                            "src": "4818:9:44"
                                                        },
                                                        "referencedDeclaration": 5917,
                                                        "src": "4818:9:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo"
                                                        }
                                                    },
                                                    "id": 9860,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "4818:11:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_storage_$dyn_storage_ptr",
                                                        "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                                    }
                                                }
                                            },
                                            "id": 9870,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4814:66:44",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                            }
                                        },
                                        "src": "4807:73:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                        }
                                    },
                                    "id": 9872,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4807:73:44"
                                },
                                {
                                    "body": {
                                        "id": 9937,
                                        "nodeType": "Block",
                                        "src": "4933:671:44",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    9885
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 9885,
                                                        "mutability": "mutable",
                                                        "name": "relayManager",
                                                        "nameLocation": "4955:12:44",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9937,
                                                        "src": "4947:20:44",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 9884,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4947:7:44",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 9889,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 9886,
                                                        "name": "items",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9848,
                                                        "src": "4970:5:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                            "typeString": "address[] storage pointer"
                                                        }
                                                    },
                                                    "id": 9888,
                                                    "indexExpression": {
                                                        "id": 9887,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9874,
                                                        "src": "4976:1:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "4970:8:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4947:31:44"
                                            },
                                            {
                                                "assignments": [
                                                    9892
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 9892,
                                                        "mutability": "mutable",
                                                        "name": "relayInfo",
                                                        "nameLocation": "5009:9:44",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9937,
                                                        "src": "4992:26:44",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo"
                                                        },
                                                        "typeName": {
                                                            "id": 9891,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 9890,
                                                                "name": "RelayInfo",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 5917,
                                                                "src": "4992:9:44"
                                                            },
                                                            "referencedDeclaration": 5917,
                                                            "src": "4992:9:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 9897,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 9894,
                                                            "name": "relayHub",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9830,
                                                            "src": "5034:8:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9895,
                                                            "name": "relayManager",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9885,
                                                            "src": "5044:12:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9893,
                                                        "name": "getRelayInfo",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9792,
                                                        "src": "5021:12:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_struct$_RelayInfo_$5917_memory_ptr_$",
                                                            "typeString": "function (address,address) view returns (struct IRelayRegistrar.RelayInfo memory)"
                                                        }
                                                    },
                                                    "id": 9896,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5021:36:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                        "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4992:65:44"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 9906,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 9901,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 9898,
                                                                "name": "relayInfo",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9892,
                                                                "src": "5092:9:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                                    "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                                }
                                                            },
                                                            "id": 9899,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "lastSeenBlockNumber",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5904,
                                                            "src": "5092:29:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "id": 9900,
                                                            "name": "oldestBlockNumber",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9832,
                                                            "src": "5124:17:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "5092:49:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "||",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 9905,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 9902,
                                                                "name": "relayInfo",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9892,
                                                                "src": "5161:9:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                                    "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                                }
                                                            },
                                                            "id": 9903,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "lastSeenTimestamp",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5906,
                                                            "src": "5161:27:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint40",
                                                                "typeString": "uint40"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "id": 9904,
                                                            "name": "oldestBlockTimestamp",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9834,
                                                            "src": "5191:20:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "5161:50:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "5092:119:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 9909,
                                                "nodeType": "IfStatement",
                                                "src": "5071:196:44",
                                                "trueBody": {
                                                    "id": 9908,
                                                    "nodeType": "Block",
                                                    "src": "5226:41:44",
                                                    "statements": [
                                                        {
                                                            "id": 9907,
                                                            "nodeType": "Continue",
                                                            "src": "5244:8:44"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "clauses": [
                                                    {
                                                        "block": {
                                                            "id": 9916,
                                                            "nodeType": "Block",
                                                            "src": "5400:15:44",
                                                            "statements": []
                                                        },
                                                        "errorName": "",
                                                        "id": 9917,
                                                        "nodeType": "TryCatchClause",
                                                        "src": "5400:15:44"
                                                    },
                                                    {
                                                        "block": {
                                                            "id": 9922,
                                                            "nodeType": "Block",
                                                            "src": "5454:41:44",
                                                            "statements": [
                                                                {
                                                                    "id": 9921,
                                                                    "nodeType": "Continue",
                                                                    "src": "5472:8:44"
                                                                }
                                                            ]
                                                        },
                                                        "errorName": "",
                                                        "id": 9923,
                                                        "nodeType": "TryCatchClause",
                                                        "parameters": {
                                                            "id": 9920,
                                                            "nodeType": "ParameterList",
                                                            "parameters": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 9919,
                                                                    "mutability": "mutable",
                                                                    "name": "",
                                                                    "nameLocation": "-1:-1:-1",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 9923,
                                                                    "src": "5423:12:44",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 9918,
                                                                        "name": "bytes",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "5423:5:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                                            "typeString": "bytes"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "src": "5422:31:44"
                                                        },
                                                        "src": "5416:79:44"
                                                    }
                                                ],
                                                "externalCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 9914,
                                                            "name": "relayManager",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9885,
                                                            "src": "5386:12:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 9911,
                                                                    "name": "relayHub",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9830,
                                                                    "src": "5351:8:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 9910,
                                                                "name": "IRelayHub",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5896,
                                                                "src": "5341:9:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IRelayHub_$5896_$",
                                                                    "typeString": "type(contract IRelayHub)"
                                                                }
                                                            },
                                                            "id": 9912,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5341:19:44",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                                "typeString": "contract IRelayHub"
                                                            }
                                                        },
                                                        "id": 9913,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "verifyRelayManagerStaked",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5857,
                                                        "src": "5341:44:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$__$",
                                                            "typeString": "function (address) view external"
                                                        }
                                                    },
                                                    "id": 9915,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5341:58:44",
                                                    "tryCall": true,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9924,
                                                "nodeType": "TryStatement",
                                                "src": "5337:158:44"
                                            },
                                            {
                                                "expression": {
                                                    "id": 9930,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 9925,
                                                            "name": "info",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9842,
                                                            "src": "5508:4:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                                                "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                                            }
                                                        },
                                                        "id": 9928,
                                                        "indexExpression": {
                                                            "id": 9927,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "++",
                                                            "prefix": false,
                                                            "src": "5513:8:44",
                                                            "subExpression": {
                                                                "id": 9926,
                                                                "name": "filled",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9854,
                                                                "src": "5513:6:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "5508:14:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 9929,
                                                        "name": "relayInfo",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9892,
                                                        "src": "5525:9:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                        }
                                                    },
                                                    "src": "5508:26:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                        "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                    }
                                                },
                                                "id": 9931,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5508:26:44"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 9934,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 9932,
                                                        "name": "filled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9854,
                                                        "src": "5552:6:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "id": 9933,
                                                        "name": "maxCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9836,
                                                        "src": "5562:8:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5552:18:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 9936,
                                                "nodeType": "IfStatement",
                                                "src": "5548:45:44",
                                                "trueBody": {
                                                    "id": 9935,
                                                    "nodeType": "Break",
                                                    "src": "5588:5:44"
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 9880,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 9877,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9874,
                                            "src": "4910:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 9878,
                                                "name": "items",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9848,
                                                "src": "4914:5:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[] storage pointer"
                                                }
                                            },
                                            "id": 9879,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4914:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4910:16:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 9938,
                                    "initializationExpression": {
                                        "assignments": [
                                            9874
                                        ],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 9874,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "4903:1:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9938,
                                                "src": "4895:9:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9873,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4895:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 9876,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 9875,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4907:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4895:13:44"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 9882,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "4928:3:44",
                                            "subExpression": {
                                                "id": 9881,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9874,
                                                "src": "4928:1:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 9883,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4928:3:44"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "4890:714:44"
                                },
                                {
                                    "AST": {
                                        "nodeType": "YulBlock",
                                        "src": "5622:24:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "info",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5631:4:44"
                                                        },
                                                        {
                                                            "name": "filled",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5637:6:44"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5624:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5624:20:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5624:20:44"
                                            }
                                        ]
                                    },
                                    "evmVersion": "london",
                                    "externalReferences": [
                                        {
                                            "declaration": 9854,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "5637:6:44",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 9842,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "5631:4:44",
                                            "valueSize": 1
                                        }
                                    ],
                                    "id": 9939,
                                    "nodeType": "InlineAssembly",
                                    "src": "5613:33:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9828,
                            "nodeType": "StructuredDocumentation",
                            "src": "4427:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "55fb8d60",
                        "id": 9941,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "readRelayInfosInRange",
                        "nameLocation": "4472:21:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9838,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "4649:8:44"
                        },
                        "parameters": {
                            "id": 9837,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9830,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "4511:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4503:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9829,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4503:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9832,
                                    "mutability": "mutable",
                                    "name": "oldestBlockNumber",
                                    "nameLocation": "4537:17:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4529:25:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9831,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4529:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9834,
                                    "mutability": "mutable",
                                    "name": "oldestBlockTimestamp",
                                    "nameLocation": "4572:20:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4564:28:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9833,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4564:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9836,
                                    "mutability": "mutable",
                                    "name": "maxCount",
                                    "nameLocation": "4610:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4602:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9835,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4602:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4493:131:44"
                        },
                        "returnParameters": {
                            "id": 9843,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9842,
                                    "mutability": "mutable",
                                    "name": "info",
                                    "nameLocation": "4699:4:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4680:23:44",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 9840,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 9839,
                                                "name": "RelayInfo",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5917,
                                                "src": "4680:9:44"
                                            },
                                            "referencedDeclaration": 5917,
                                            "src": "4680:9:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            }
                                        },
                                        "id": 9841,
                                        "nodeType": "ArrayTypeName",
                                        "src": "4680:11:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_storage_$dyn_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4670:39:44"
                        },
                        "scope": 9942,
                        "src": "4463:1189:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 9943,
                "src": "700:4954:44",
                "usedErrors": []
            }
        ],
        "src": "0:5654:44"
    },
    "legacyAST": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/RelayRegistrar.sol",
        "exportedSymbols": {
            "Context": [
                11508
            ],
            "ERC165": [
                12146
            ],
            "GsnTypes": [
                8492
            ],
            "IERC165": [
                12352
            ],
            "IERC20": [
                10849
            ],
            "IForwarder": [
                5129
            ],
            "IRelayHub": [
                5896
            ],
            "IRelayRegistrar": [
                5994
            ],
            "IStakeManager": [
                6284
            ],
            "MinLibBytes": [
                8687
            ],
            "Ownable": [
                10182
            ],
            "RelayRegistrar": [
                9942
            ],
            "console": [
                20920
            ]
        },
        "id": 9943,
        "license": "GPL-3.0-only",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 9501,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".6"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:44"
            },
            {
                "absolutePath": "hardhat/console.sol",
                "file": "hardhat/console.sol",
                "id": 9502,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 20921,
                "src": "144:29:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                "id": 9503,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 12147,
                "src": "175:64:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                "file": "@openzeppelin/contracts/access/Ownable.sol",
                "id": 9504,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 10183,
                "src": "240:52:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/MinLibBytes.sol",
                "file": "./MinLibBytes.sol",
                "id": 9505,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 8688,
                "src": "294:27:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayHub.sol",
                "file": "../interfaces/IRelayHub.sol",
                "id": 9506,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 5897,
                "src": "322:37:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayRegistrar.sol",
                "file": "../interfaces/IRelayRegistrar.sol",
                "id": 9507,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 9943,
                "sourceUnit": 5995,
                "src": "360:43:44",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 9509,
                            "name": "IRelayRegistrar",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5994,
                            "src": "727:15:44"
                        },
                        "id": 9510,
                        "nodeType": "InheritanceSpecifier",
                        "src": "727:15:44"
                    },
                    {
                        "baseName": {
                            "id": 9511,
                            "name": "Ownable",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 10182,
                            "src": "744:7:44"
                        },
                        "id": 9512,
                        "nodeType": "InheritanceSpecifier",
                        "src": "744:7:44"
                    },
                    {
                        "baseName": {
                            "id": 9513,
                            "name": "ERC165",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12146,
                            "src": "753:6:44"
                        },
                        "id": 9514,
                        "nodeType": "InheritanceSpecifier",
                        "src": "753:6:44"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 9508,
                    "nodeType": "StructuredDocumentation",
                    "src": "405:294:44",
                    "text": " @title The RelayRegistrar Implementation\n @notice Keeps a list of registered relayers.\n @notice Provides view functions to read the list of registered relayers and filters out invalid ones.\n @notice Protects the list from spamming entries: only staked relayers are added."
                },
                "fullyImplemented": true,
                "id": 9942,
                "linearizedBaseContracts": [
                    9942,
                    12146,
                    10182,
                    11508,
                    5994,
                    12352
                ],
                "name": "RelayRegistrar",
                "nameLocation": "709:14:44",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 9517,
                        "libraryName": {
                            "id": 9515,
                            "name": "MinLibBytes",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 8687,
                            "src": "772:11:44"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "766:28:44",
                        "typeName": {
                            "id": 9516,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "788:5:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                            }
                        }
                    },
                    {
                        "constant": true,
                        "id": 9520,
                        "mutability": "constant",
                        "name": "MAX_RELAYS_RETURNED_COUNT",
                        "nameLocation": "825:25:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "800:57:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 9518,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "800:7:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "value": {
                            "hexValue": "31303030",
                            "id": 9519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "853:4:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                            },
                            "value": "1000"
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "documentation": {
                            "id": 9521,
                            "nodeType": "StructuredDocumentation",
                            "src": "864:114:44",
                            "text": "@notice Mapping from `RelayHub` address to a mapping from a Relay Manager address to its registration details."
                        },
                        "id": 9528,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "1042:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "983:65:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct IRelayRegistrar.RelayInfo))"
                        },
                        "typeName": {
                            "id": 9527,
                            "keyType": {
                                "id": 9522,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "991:7:44",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "983:49:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct IRelayRegistrar.RelayInfo))"
                            },
                            "valueType": {
                                "id": 9526,
                                "keyType": {
                                    "id": 9523,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1010:7:44",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "1002:29:44",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$",
                                    "typeString": "mapping(address => struct IRelayRegistrar.RelayInfo)"
                                },
                                "valueType": {
                                    "id": 9525,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                        "id": 9524,
                                        "name": "RelayInfo",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5917,
                                        "src": "1021:9:44"
                                    },
                                    "referencedDeclaration": 5917,
                                    "src": "1021:9:44",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo"
                                    }
                                }
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "documentation": {
                            "id": 9529,
                            "nodeType": "StructuredDocumentation",
                            "src": "1055:113:44",
                            "text": "@notice Mapping from `RelayHub` address to an array of Relay Managers that are registered on that `RelayHub`."
                        },
                        "id": 9534,
                        "mutability": "mutable",
                        "name": "indexedValues",
                        "nameLocation": "1212:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "1173:52:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(address => address[])"
                        },
                        "typeName": {
                            "id": 9533,
                            "keyType": {
                                "id": 9530,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1181:7:44",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1173:29:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                "typeString": "mapping(address => address[])"
                            },
                            "valueType": {
                                "baseType": {
                                    "id": 9531,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1192:7:44",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "id": 9532,
                                "nodeType": "ArrayTypeName",
                                "src": "1192:9:44",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[]"
                                }
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 9536,
                        "mutability": "immutable",
                        "name": "creationBlock",
                        "nameLocation": "1258:13:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "1232:39:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 9535,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1232:7:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 9538,
                        "mutability": "mutable",
                        "name": "relayRegistrationMaxAge",
                        "nameLocation": "1294:23:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 9942,
                        "src": "1278:39:44",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 9537,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1278:7:44",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 9552,
                            "nodeType": "Block",
                            "src": "1370:107:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 9544,
                                                "name": "_relayRegistrationMaxAge",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9540,
                                                "src": "1407:24:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 9543,
                                            "name": "setRelayRegistrationMaxAge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9587,
                                            "src": "1380:26:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                                "typeString": "function (uint256)"
                                            }
                                        },
                                        "id": 9545,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1380:52:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9546,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1380:52:44"
                                },
                                {
                                    "expression": {
                                        "id": 9550,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 9547,
                                            "name": "creationBlock",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9536,
                                            "src": "1442:13:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "id": 9548,
                                                "name": "block",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967292,
                                                "src": "1458:5:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_block",
                                                    "typeString": "block"
                                                }
                                            },
                                            "id": 9549,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "number",
                                            "nodeType": "MemberAccess",
                                            "src": "1458:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1442:28:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 9551,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1442:28:44"
                                }
                            ]
                        },
                        "id": 9553,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 9541,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9540,
                                    "mutability": "mutable",
                                    "name": "_relayRegistrationMaxAge",
                                    "nameLocation": "1344:24:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9553,
                                    "src": "1336:32:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9539,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1336:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1335:34:44"
                        },
                        "returnParameters": {
                            "id": 9542,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1370:0:44"
                        },
                        "scope": 9942,
                        "src": "1324:153:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5944
                        ],
                        "body": {
                            "id": 9562,
                            "nodeType": "Block",
                            "src": "1587:37:44",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 9560,
                                        "name": "creationBlock",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9536,
                                        "src": "1604:13:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 9559,
                                    "id": 9561,
                                    "nodeType": "Return",
                                    "src": "1597:20:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9554,
                            "nodeType": "StructuredDocumentation",
                            "src": "1483:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "20ffd56d",
                        "id": 9563,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getCreationBlock",
                        "nameLocation": "1528:16:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9556,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1556:8:44"
                        },
                        "parameters": {
                            "id": 9555,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1544:2:44"
                        },
                        "returnParameters": {
                            "id": 9559,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9558,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9563,
                                    "src": "1579:7:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9557,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1579:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1578:9:44"
                        },
                        "scope": 9942,
                        "src": "1519:105:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            5950
                        ],
                        "body": {
                            "id": 9572,
                            "nodeType": "Block",
                            "src": "1744:47:44",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 9570,
                                        "name": "relayRegistrationMaxAge",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9538,
                                        "src": "1761:23:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 9569,
                                    "id": 9571,
                                    "nodeType": "Return",
                                    "src": "1754:30:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9564,
                            "nodeType": "StructuredDocumentation",
                            "src": "1630:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "e04e5b4f",
                        "id": 9573,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRelayRegistrationMaxAge",
                        "nameLocation": "1675:26:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9566,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1713:8:44"
                        },
                        "parameters": {
                            "id": 9565,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1701:2:44"
                        },
                        "returnParameters": {
                            "id": 9569,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9568,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9573,
                                    "src": "1736:7:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9567,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1736:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1735:9:44"
                        },
                        "scope": 9942,
                        "src": "1666:125:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            5956
                        ],
                        "body": {
                            "id": 9586,
                            "nodeType": "Block",
                            "src": "1929:67:44",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 9584,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 9582,
                                            "name": "relayRegistrationMaxAge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9538,
                                            "src": "1939:23:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 9583,
                                            "name": "_relayRegistrationMaxAge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9576,
                                            "src": "1965:24:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1939:50:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 9585,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1939:50:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9574,
                            "nodeType": "StructuredDocumentation",
                            "src": "1797:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "c240c456",
                        "id": 9587,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 9580,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 9579,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 10101,
                                    "src": "1919:9:44"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1919:9:44"
                            }
                        ],
                        "name": "setRelayRegistrationMaxAge",
                        "nameLocation": "1842:26:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9578,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1910:8:44"
                        },
                        "parameters": {
                            "id": 9577,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9576,
                                    "mutability": "mutable",
                                    "name": "_relayRegistrationMaxAge",
                                    "nameLocation": "1877:24:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9587,
                                    "src": "1869:32:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9575,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1869:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1868:34:44"
                        },
                        "returnParameters": {
                            "id": 9581,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1929:0:44"
                        },
                        "scope": 9942,
                        "src": "1833:163:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            12145,
                            12351
                        ],
                        "body": {
                            "id": 9610,
                            "nodeType": "Block",
                            "src": "2138:124:44",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 9608,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            },
                                            "id": 9603,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 9598,
                                                "name": "interfaceId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9590,
                                                "src": "2155:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9600,
                                                            "name": "IRelayRegistrar",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5994,
                                                            "src": "2175:15:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IRelayRegistrar_$5994_$",
                                                                "typeString": "type(contract IRelayRegistrar)"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_type$_t_contract$_IRelayRegistrar_$5994_$",
                                                                "typeString": "type(contract IRelayRegistrar)"
                                                            }
                                                        ],
                                                        "id": 9599,
                                                        "name": "type",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967269,
                                                        "src": "2170:4:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                            "typeString": "function () pure"
                                                        }
                                                    },
                                                    "id": 9601,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2170:21:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IRelayRegistrar_$5994",
                                                        "typeString": "type(contract IRelayRegistrar)"
                                                    }
                                                },
                                                "id": 9602,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "interfaceId",
                                                "nodeType": "MemberAccess",
                                                "src": "2170:33:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                }
                                            },
                                            "src": "2155:48:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "id": 9606,
                                                    "name": "interfaceId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9590,
                                                    "src": "2243:11:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 9604,
                                                    "name": "super",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967271,
                                                    "src": "2219:5:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_super$_RelayRegistrar_$9942_$",
                                                        "typeString": "type(contract super RelayRegistrar)"
                                                    }
                                                },
                                                "id": 9605,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "supportsInterface",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12145,
                                                "src": "2219:23:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                                    "typeString": "function (bytes4) view returns (bool)"
                                                }
                                            },
                                            "id": 9607,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2219:36:44",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "2155:100:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 9597,
                                    "id": 9609,
                                    "nodeType": "Return",
                                    "src": "2148:107:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9588,
                            "nodeType": "StructuredDocumentation",
                            "src": "2002:23:44",
                            "text": "@inheritdoc IERC165"
                        },
                        "functionSelector": "01ffc9a7",
                        "id": 9611,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "supportsInterface",
                        "nameLocation": "2039:17:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9594,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [
                                {
                                    "id": 9592,
                                    "name": "IERC165",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 12352,
                                    "src": "2106:7:44"
                                },
                                {
                                    "id": 9593,
                                    "name": "ERC165",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 12146,
                                    "src": "2115:6:44"
                                }
                            ],
                            "src": "2097:25:44"
                        },
                        "parameters": {
                            "id": 9591,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9590,
                                    "mutability": "mutable",
                                    "name": "interfaceId",
                                    "nameLocation": "2064:11:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9611,
                                    "src": "2057:18:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                    },
                                    "typeName": {
                                        "id": 9589,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2057:6:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2056:20:44"
                        },
                        "returnParameters": {
                            "id": 9597,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9596,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9611,
                                    "src": "2132:4:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 9595,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2132:4:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2131:6:44"
                        },
                        "scope": 9942,
                        "src": "2030:232:44",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5938
                        ],
                        "body": {
                            "id": 9646,
                            "nodeType": "Block",
                            "src": "2416:249:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9623
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9623,
                                            "mutability": "mutable",
                                            "name": "relayManager",
                                            "nameLocation": "2434:12:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9646,
                                            "src": "2426:20:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 9622,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2426:7:44",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9626,
                                    "initialValue": {
                                        "expression": {
                                            "id": 9624,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967281,
                                            "src": "2449:3:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 9625,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "2449:10:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2426:33:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 9631,
                                                "name": "relayManager",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9623,
                                                "src": "2513:12:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 9628,
                                                        "name": "relayHub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9614,
                                                        "src": "2479:8:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 9627,
                                                    "name": "IRelayHub",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5896,
                                                    "src": "2469:9:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IRelayHub_$5896_$",
                                                        "typeString": "type(contract IRelayHub)"
                                                    }
                                                },
                                                "id": 9629,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2469:19:44",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            },
                                            "id": 9630,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "onRelayServerRegistered",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5681,
                                            "src": "2469:43:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address) external"
                                            }
                                        },
                                        "id": 9632,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2469:57:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9633,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2469:57:44"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 9635,
                                                "name": "relayManager",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9623,
                                                "src": "2563:12:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9636,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9614,
                                                "src": "2577:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9637,
                                                "name": "url",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9618,
                                                "src": "2587:3:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                    "typeString": "bytes32[3] calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                    "typeString": "bytes32[3] calldata"
                                                }
                                            ],
                                            "id": 9634,
                                            "name": "RelayServerRegistered",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5928,
                                            "src": "2541:21:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_bytes32_$3_memory_ptr_$returns$__$",
                                                "typeString": "function (address,address,bytes32[3] memory)"
                                            }
                                        },
                                        "id": 9638,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2541:50:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9639,
                                    "nodeType": "EmitStatement",
                                    "src": "2536:55:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 9641,
                                                "name": "relayManager",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9623,
                                                "src": "2630:12:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9642,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9614,
                                                "src": "2644:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9643,
                                                "name": "url",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9618,
                                                "src": "2654:3:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                    "typeString": "bytes32[3] calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                    "typeString": "bytes32[3] calldata"
                                                }
                                            ],
                                            "id": 9640,
                                            "name": "storeRelayServerRegistration",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9760,
                                            "src": "2601:28:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_bytes32_$3_calldata_ptr_$returns$__$",
                                                "typeString": "function (address,address,bytes32[3] calldata)"
                                            }
                                        },
                                        "id": 9644,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2601:57:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9645,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2601:57:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9612,
                            "nodeType": "StructuredDocumentation",
                            "src": "2268:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "953f1768",
                        "id": 9647,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "registerRelayServer",
                        "nameLocation": "2313:19:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9620,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2407:8:44"
                        },
                        "parameters": {
                            "id": 9619,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9614,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "2350:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9647,
                                    "src": "2342:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9613,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2342:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9618,
                                    "mutability": "mutable",
                                    "name": "url",
                                    "nameLocation": "2388:3:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9647,
                                    "src": "2368:23:44",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                        "typeString": "bytes32[3]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 9615,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2368:7:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "id": 9617,
                                        "length": {
                                            "hexValue": "33",
                                            "id": 9616,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2376:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                        },
                                        "nodeType": "ArrayTypeName",
                                        "src": "2368:10:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                                            "typeString": "bytes32[3]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2332:65:44"
                        },
                        "returnParameters": {
                            "id": 9621,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2416:0:44"
                        },
                        "scope": 9942,
                        "src": "2304:361:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 9681,
                            "nodeType": "Block",
                            "src": "2765:225:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9659
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9659,
                                            "mutability": "mutable",
                                            "name": "storageInfo",
                                            "nameLocation": "2793:11:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9681,
                                            "src": "2775:29:44",
                                            "stateVariable": false,
                                            "storageLocation": "storage",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            },
                                            "typeName": {
                                                "id": 9658,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 9657,
                                                    "name": "RelayInfo",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5917,
                                                    "src": "2775:9:44"
                                                },
                                                "referencedDeclaration": 5917,
                                                "src": "2775:9:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9665,
                                    "initialValue": {
                                        "baseExpression": {
                                            "baseExpression": {
                                                "id": 9660,
                                                "name": "values",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9528,
                                                "src": "2807:6:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$_$",
                                                    "typeString": "mapping(address => mapping(address => struct IRelayRegistrar.RelayInfo storage ref))"
                                                }
                                            },
                                            "id": 9662,
                                            "indexExpression": {
                                                "id": 9661,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9649,
                                                "src": "2814:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2807:16:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$",
                                                "typeString": "mapping(address => struct IRelayRegistrar.RelayInfo storage ref)"
                                            }
                                        },
                                        "id": 9664,
                                        "indexExpression": {
                                            "id": 9663,
                                            "name": "relayManager",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9651,
                                            "src": "2824:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2807:30:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage",
                                            "typeString": "struct IRelayRegistrar.RelayInfo storage ref"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2775:62:44"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        },
                                        "id": 9669,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 9666,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9659,
                                                "src": "2851:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9667,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lastSeenBlockNumber",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5904,
                                            "src": "2851:31:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 9668,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2886:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "2851:36:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 9678,
                                    "nodeType": "IfStatement",
                                    "src": "2847:109:44",
                                    "trueBody": {
                                        "id": 9677,
                                        "nodeType": "Block",
                                        "src": "2889:67:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9674,
                                                            "name": "relayManager",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9651,
                                                            "src": "2932:12:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 9670,
                                                                "name": "indexedValues",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9534,
                                                                "src": "2903:13:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                }
                                                            },
                                                            "id": 9672,
                                                            "indexExpression": {
                                                                "id": 9671,
                                                                "name": "relayHub",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9649,
                                                                "src": "2917:8:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "2903:23:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                "typeString": "address[] storage ref"
                                                            }
                                                        },
                                                        "id": 9673,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "2903:28:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                                            "typeString": "function (address[] storage pointer,address)"
                                                        }
                                                    },
                                                    "id": 9675,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2903:42:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9676,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2903:42:44"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 9679,
                                        "name": "storageInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9659,
                                        "src": "2972:11:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                        }
                                    },
                                    "functionReturnParameters": 9656,
                                    "id": 9680,
                                    "nodeType": "Return",
                                    "src": "2965:18:44"
                                }
                            ]
                        },
                        "id": 9682,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "addItem",
                        "nameLocation": "2680:7:44",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 9652,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9649,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "2696:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9682,
                                    "src": "2688:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9648,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2688:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9651,
                                    "mutability": "mutable",
                                    "name": "relayManager",
                                    "nameLocation": "2714:12:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9682,
                                    "src": "2706:20:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9650,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2706:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2687:40:44"
                        },
                        "returnParameters": {
                            "id": 9656,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9655,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9682,
                                    "src": "2746:17:44",
                                    "stateVariable": false,
                                    "storageLocation": "storage",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo"
                                    },
                                    "typeName": {
                                        "id": 9654,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 9653,
                                            "name": "RelayInfo",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5917,
                                            "src": "2746:9:44"
                                        },
                                        "referencedDeclaration": 5917,
                                        "src": "2746:9:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2745:19:44"
                        },
                        "scope": 9942,
                        "src": "2671:319:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 9759,
                            "nodeType": "Block",
                            "src": "3138:496:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9695
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9695,
                                            "mutability": "mutable",
                                            "name": "storageInfo",
                                            "nameLocation": "3166:11:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9759,
                                            "src": "3148:29:44",
                                            "stateVariable": false,
                                            "storageLocation": "storage",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            },
                                            "typeName": {
                                                "id": 9694,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 9693,
                                                    "name": "RelayInfo",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5917,
                                                    "src": "3148:9:44"
                                                },
                                                "referencedDeclaration": 5917,
                                                "src": "3148:9:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9700,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 9697,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9686,
                                                "src": "3188:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 9698,
                                                "name": "relayManager",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9684,
                                                "src": "3198:12:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 9696,
                                            "name": "addItem",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9682,
                                            "src": "3180:7:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_struct$_RelayInfo_$5917_storage_ptr_$",
                                                "typeString": "function (address,address) returns (struct IRelayRegistrar.RelayInfo storage pointer)"
                                            }
                                        },
                                        "id": 9699,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3180:31:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3148:63:44"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        },
                                        "id": 9704,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 9701,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3225:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9702,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "firstSeenBlockNumber",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5908,
                                            "src": "3225:32:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 9703,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3261:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "3225:37:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 9726,
                                    "nodeType": "IfStatement",
                                    "src": "3221:193:44",
                                    "trueBody": {
                                        "id": 9725,
                                        "nodeType": "Block",
                                        "src": "3264:150:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 9713,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "id": 9705,
                                                            "name": "storageInfo",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9695,
                                                            "src": "3278:11:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                                "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                            }
                                                        },
                                                        "id": 9707,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "firstSeenBlockNumber",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5908,
                                                        "src": "3278:32:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 9710,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967292,
                                                                    "src": "3320:5:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 9711,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "number",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3320:12:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 9709,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "3313:6:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint32_$",
                                                                "typeString": "type(uint32)"
                                                            },
                                                            "typeName": {
                                                                "id": 9708,
                                                                "name": "uint32",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "3313:6:44",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 9712,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3313:20:44",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "src": "3278:55:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "id": 9714,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3278:55:44"
                                            },
                                            {
                                                "expression": {
                                                    "id": 9723,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "id": 9715,
                                                            "name": "storageInfo",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9695,
                                                            "src": "3347:11:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                                "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                            }
                                                        },
                                                        "id": 9717,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "firstSeenTimestamp",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5910,
                                                        "src": "3347:30:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint40",
                                                            "typeString": "uint40"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 9720,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967292,
                                                                    "src": "3387:5:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 9721,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "timestamp",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3387:15:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 9719,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "3380:6:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint40_$",
                                                                "typeString": "type(uint40)"
                                                            },
                                                            "typeName": {
                                                                "id": 9718,
                                                                "name": "uint40",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "3380:6:44",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 9722,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3380:23:44",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint40",
                                                            "typeString": "uint40"
                                                        }
                                                    },
                                                    "src": "3347:56:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint40",
                                                        "typeString": "uint40"
                                                    }
                                                },
                                                "id": 9724,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3347:56:44"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 9735,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 9727,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3423:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9729,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "lastSeenBlockNumber",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5904,
                                            "src": "3423:31:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "expression": {
                                                        "id": 9732,
                                                        "name": "block",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967292,
                                                        "src": "3464:5:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_block",
                                                            "typeString": "block"
                                                        }
                                                    },
                                                    "id": 9733,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "number",
                                                    "nodeType": "MemberAccess",
                                                    "src": "3464:12:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "id": 9731,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3457:6:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint32_$",
                                                    "typeString": "type(uint32)"
                                                },
                                                "typeName": {
                                                    "id": 9730,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3457:6:44",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 9734,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3457:20:44",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            }
                                        },
                                        "src": "3423:54:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        }
                                    },
                                    "id": 9736,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3423:54:44"
                                },
                                {
                                    "expression": {
                                        "id": 9745,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 9737,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3487:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9739,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "lastSeenTimestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5906,
                                            "src": "3487:29:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint40",
                                                "typeString": "uint40"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "expression": {
                                                        "id": 9742,
                                                        "name": "block",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967292,
                                                        "src": "3526:5:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_block",
                                                            "typeString": "block"
                                                        }
                                                    },
                                                    "id": 9743,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "timestamp",
                                                    "nodeType": "MemberAccess",
                                                    "src": "3526:15:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "id": 9741,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3519:6:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint40_$",
                                                    "typeString": "type(uint40)"
                                                },
                                                "typeName": {
                                                    "id": 9740,
                                                    "name": "uint40",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3519:6:44",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 9744,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3519:23:44",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint40",
                                                "typeString": "uint40"
                                            }
                                        },
                                        "src": "3487:55:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint40",
                                            "typeString": "uint40"
                                        }
                                    },
                                    "id": 9746,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3487:55:44"
                                },
                                {
                                    "expression": {
                                        "id": 9751,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 9747,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3552:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9749,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "relayManager",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5916,
                                            "src": "3552:24:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 9750,
                                            "name": "relayManager",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9684,
                                            "src": "3579:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3552:39:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 9752,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3552:39:44"
                                },
                                {
                                    "expression": {
                                        "id": 9757,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 9753,
                                                "name": "storageInfo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9695,
                                                "src": "3601:11:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo storage pointer"
                                                }
                                            },
                                            "id": 9755,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "urlParts",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5914,
                                            "src": "3601:20:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes32_$3_storage",
                                                "typeString": "bytes32[3] storage ref"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 9756,
                                            "name": "url",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9690,
                                            "src": "3624:3:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                                "typeString": "bytes32[3] calldata"
                                            }
                                        },
                                        "src": "3601:26:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$3_storage",
                                            "typeString": "bytes32[3] storage ref"
                                        }
                                    },
                                    "id": 9758,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3601:26:44"
                                }
                            ]
                        },
                        "id": 9760,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "storeRelayServerRegistration",
                        "nameLocation": "3005:28:44",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 9691,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9684,
                                    "mutability": "mutable",
                                    "name": "relayManager",
                                    "nameLocation": "3051:12:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9760,
                                    "src": "3043:20:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9683,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3043:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9686,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "3081:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9760,
                                    "src": "3073:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9685,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3073:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9690,
                                    "mutability": "mutable",
                                    "name": "url",
                                    "nameLocation": "3119:3:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9760,
                                    "src": "3099:23:44",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                                        "typeString": "bytes32[3]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 9687,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3099:7:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "id": 9689,
                                        "length": {
                                            "hexValue": "33",
                                            "id": 9688,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3107:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                        },
                                        "nodeType": "ArrayTypeName",
                                        "src": "3099:10:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                                            "typeString": "bytes32[3]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3033:95:44"
                        },
                        "returnParameters": {
                            "id": 9692,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3138:0:44"
                        },
                        "scope": 9942,
                        "src": "2996:638:44",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "baseFunctions": [
                            5967
                        ],
                        "body": {
                            "id": 9791,
                            "nodeType": "Block",
                            "src": "3786:166:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9774
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9774,
                                            "mutability": "mutable",
                                            "name": "info",
                                            "nameLocation": "3813:4:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9791,
                                            "src": "3796:21:44",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            },
                                            "typeName": {
                                                "id": 9773,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 9772,
                                                    "name": "RelayInfo",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5917,
                                                    "src": "3796:9:44"
                                                },
                                                "referencedDeclaration": 5917,
                                                "src": "3796:9:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                    "typeString": "struct IRelayRegistrar.RelayInfo"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9780,
                                    "initialValue": {
                                        "baseExpression": {
                                            "baseExpression": {
                                                "id": 9775,
                                                "name": "values",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9528,
                                                "src": "3820:6:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$_$",
                                                    "typeString": "mapping(address => mapping(address => struct IRelayRegistrar.RelayInfo storage ref))"
                                                }
                                            },
                                            "id": 9777,
                                            "indexExpression": {
                                                "id": 9776,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9763,
                                                "src": "3827:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3820:16:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_RelayInfo_$5917_storage_$",
                                                "typeString": "mapping(address => struct IRelayRegistrar.RelayInfo storage ref)"
                                            }
                                        },
                                        "id": 9779,
                                        "indexExpression": {
                                            "id": 9778,
                                            "name": "relayManager",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9765,
                                            "src": "3837:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3820:30:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage",
                                            "typeString": "struct IRelayRegistrar.RelayInfo storage ref"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3796:54:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "id": 9785,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "id": 9782,
                                                        "name": "info",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9774,
                                                        "src": "3868:4:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                        }
                                                    },
                                                    "id": 9783,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "lastSeenBlockNumber",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 5904,
                                                    "src": "3868:24:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 9784,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3896:1:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "3868:29:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "72656c61794d616e61676572206e6f7420666f756e64",
                                                "id": 9786,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3899:24:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_967f2bafcd8989d8e38fea9dc576dcb6f54835fd1258aa050009ec28d4002f12",
                                                    "typeString": "literal_string \"relayManager not found\""
                                                },
                                                "value": "relayManager not found"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_967f2bafcd8989d8e38fea9dc576dcb6f54835fd1258aa050009ec28d4002f12",
                                                    "typeString": "literal_string \"relayManager not found\""
                                                }
                                            ],
                                            "id": 9781,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "3860:7:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 9787,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3860:64:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 9788,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3860:64:44"
                                },
                                {
                                    "expression": {
                                        "id": 9789,
                                        "name": "info",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9774,
                                        "src": "3941:4:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                        }
                                    },
                                    "functionReturnParameters": 9771,
                                    "id": 9790,
                                    "nodeType": "Return",
                                    "src": "3934:11:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9761,
                            "nodeType": "StructuredDocumentation",
                            "src": "3640:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "78ae6b87",
                        "id": 9792,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRelayInfo",
                        "nameLocation": "3685:12:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9767,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "3750:8:44"
                        },
                        "parameters": {
                            "id": 9766,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9763,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "3706:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9792,
                                    "src": "3698:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9762,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3698:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9765,
                                    "mutability": "mutable",
                                    "name": "relayManager",
                                    "nameLocation": "3724:12:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9792,
                                    "src": "3716:20:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9764,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3716:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3697:40:44"
                        },
                        "returnParameters": {
                            "id": 9771,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9770,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9792,
                                    "src": "3768:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo"
                                    },
                                    "typeName": {
                                        "id": 9769,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 9768,
                                            "name": "RelayInfo",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5917,
                                            "src": "3768:9:44"
                                        },
                                        "referencedDeclaration": 5917,
                                        "src": "3768:9:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3767:18:44"
                        },
                        "scope": 9942,
                        "src": "3676:276:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5977
                        ],
                        "body": {
                            "id": 9826,
                            "nodeType": "Block",
                            "src": "4135:286:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9804
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9804,
                                            "mutability": "mutable",
                                            "name": "blockTimestamp",
                                            "nameLocation": "4153:14:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9826,
                                            "src": "4145:22:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 9803,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4145:7:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9807,
                                    "initialValue": {
                                        "expression": {
                                            "id": 9805,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967292,
                                            "src": "4170:5:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_block",
                                                "typeString": "block"
                                            }
                                        },
                                        "id": 9806,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "4170:15:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4145:40:44"
                                },
                                {
                                    "assignments": [
                                        9809
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9809,
                                            "mutability": "mutable",
                                            "name": "oldestBlockTimestamp",
                                            "nameLocation": "4203:20:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9826,
                                            "src": "4195:28:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 9808,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4195:7:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9818,
                                    "initialValue": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 9812,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 9810,
                                                "name": "blockTimestamp",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9804,
                                                "src": "4226:14:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">=",
                                            "rightExpression": {
                                                "id": 9811,
                                                "name": "relayRegistrationMaxAge",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9538,
                                                "src": "4244:23:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "4226:41:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "hexValue": "30",
                                            "id": 9816,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4313:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "id": 9817,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "4226:88:44",
                                        "trueExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 9815,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 9813,
                                                "name": "blockTimestamp",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9804,
                                                "src": "4270:14:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                                "id": 9814,
                                                "name": "relayRegistrationMaxAge",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9538,
                                                "src": "4287:23:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "4270:40:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4195:119:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 9820,
                                                "name": "relayHub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9795,
                                                "src": "4353:8:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "hexValue": "30",
                                                "id": 9821,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4363:1:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            {
                                                "id": 9822,
                                                "name": "oldestBlockTimestamp",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9809,
                                                "src": "4366:20:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 9823,
                                                "name": "MAX_RELAYS_RETURNED_COUNT",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9520,
                                                "src": "4388:25:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 9819,
                                            "name": "readRelayInfosInRange",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9941,
                                            "src": "4331:21:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr_$",
                                                "typeString": "function (address,uint256,uint256,uint256) view returns (struct IRelayRegistrar.RelayInfo memory[] memory)"
                                            }
                                        },
                                        "id": 9824,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4331:83:44",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                        }
                                    },
                                    "functionReturnParameters": 9802,
                                    "id": 9825,
                                    "nodeType": "Return",
                                    "src": "4324:90:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9793,
                            "nodeType": "StructuredDocumentation",
                            "src": "3958:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "f999ea82",
                        "id": 9827,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "readRelayInfos",
                        "nameLocation": "4003:14:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9797,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "4074:8:44"
                        },
                        "parameters": {
                            "id": 9796,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9795,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "4035:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9827,
                                    "src": "4027:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9794,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4027:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4017:32:44"
                        },
                        "returnParameters": {
                            "id": 9802,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9801,
                                    "mutability": "mutable",
                                    "name": "info",
                                    "nameLocation": "4124:4:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9827,
                                    "src": "4105:23:44",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 9799,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 9798,
                                                "name": "RelayInfo",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5917,
                                                "src": "4105:9:44"
                                            },
                                            "referencedDeclaration": 5917,
                                            "src": "4105:9:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            }
                                        },
                                        "id": 9800,
                                        "nodeType": "ArrayTypeName",
                                        "src": "4105:11:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_storage_$dyn_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4095:39:44"
                        },
                        "scope": 9942,
                        "src": "3994:427:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5993
                        ],
                        "body": {
                            "id": 9940,
                            "nodeType": "Block",
                            "src": "4710:942:44",
                            "statements": [
                                {
                                    "assignments": [
                                        9848
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9848,
                                            "mutability": "mutable",
                                            "name": "items",
                                            "nameLocation": "4738:5:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9940,
                                            "src": "4720:23:44",
                                            "stateVariable": false,
                                            "storageLocation": "storage",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                "typeString": "address[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 9846,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4720:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 9847,
                                                "nodeType": "ArrayTypeName",
                                                "src": "4720:9:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9852,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 9849,
                                            "name": "indexedValues",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9534,
                                            "src": "4746:13:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                "typeString": "mapping(address => address[] storage ref)"
                                            }
                                        },
                                        "id": 9851,
                                        "indexExpression": {
                                            "id": 9850,
                                            "name": "relayHub",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9830,
                                            "src": "4760:8:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4746:23:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4720:49:44"
                                },
                                {
                                    "assignments": [
                                        9854
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 9854,
                                            "mutability": "mutable",
                                            "name": "filled",
                                            "nameLocation": "4787:6:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9940,
                                            "src": "4779:14:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 9853,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4779:7:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 9856,
                                    "initialValue": {
                                        "hexValue": "30",
                                        "id": 9855,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4796:1:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4779:18:44"
                                },
                                {
                                    "expression": {
                                        "id": 9871,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 9857,
                                            "name": "info",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9842,
                                            "src": "4807:4:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 9865,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 9862,
                                                                "name": "items",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9848,
                                                                "src": "4830:5:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                                    "typeString": "address[] storage pointer"
                                                                }
                                                            },
                                                            "id": 9863,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "length",
                                                            "nodeType": "MemberAccess",
                                                            "src": "4830:12:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "id": 9864,
                                                            "name": "maxCount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9836,
                                                            "src": "4845:8:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4830:23:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 9868,
                                                        "name": "maxCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9836,
                                                        "src": "4871:8:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 9869,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "4830:49:44",
                                                    "trueExpression": {
                                                        "expression": {
                                                            "id": 9866,
                                                            "name": "items",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9848,
                                                            "src": "4856:5:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                                "typeString": "address[] storage pointer"
                                                            }
                                                        },
                                                        "id": 9867,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4856:12:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "id": 9861,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "NewExpression",
                                                "src": "4814:15:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr_$",
                                                    "typeString": "function (uint256) pure returns (struct IRelayRegistrar.RelayInfo memory[] memory)"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 9859,
                                                        "nodeType": "UserDefinedTypeName",
                                                        "pathNode": {
                                                            "id": 9858,
                                                            "name": "RelayInfo",
                                                            "nodeType": "IdentifierPath",
                                                            "referencedDeclaration": 5917,
                                                            "src": "4818:9:44"
                                                        },
                                                        "referencedDeclaration": 5917,
                                                        "src": "4818:9:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo"
                                                        }
                                                    },
                                                    "id": 9860,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "4818:11:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_storage_$dyn_storage_ptr",
                                                        "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                                    }
                                                }
                                            },
                                            "id": 9870,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4814:66:44",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                            }
                                        },
                                        "src": "4807:73:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                        }
                                    },
                                    "id": 9872,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4807:73:44"
                                },
                                {
                                    "body": {
                                        "id": 9937,
                                        "nodeType": "Block",
                                        "src": "4933:671:44",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    9885
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 9885,
                                                        "mutability": "mutable",
                                                        "name": "relayManager",
                                                        "nameLocation": "4955:12:44",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9937,
                                                        "src": "4947:20:44",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 9884,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4947:7:44",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 9889,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 9886,
                                                        "name": "items",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9848,
                                                        "src": "4970:5:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                            "typeString": "address[] storage pointer"
                                                        }
                                                    },
                                                    "id": 9888,
                                                    "indexExpression": {
                                                        "id": 9887,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9874,
                                                        "src": "4976:1:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "4970:8:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4947:31:44"
                                            },
                                            {
                                                "assignments": [
                                                    9892
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 9892,
                                                        "mutability": "mutable",
                                                        "name": "relayInfo",
                                                        "nameLocation": "5009:9:44",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9937,
                                                        "src": "4992:26:44",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo"
                                                        },
                                                        "typeName": {
                                                            "id": 9891,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 9890,
                                                                "name": "RelayInfo",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 5917,
                                                                "src": "4992:9:44"
                                                            },
                                                            "referencedDeclaration": 5917,
                                                            "src": "4992:9:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 9897,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 9894,
                                                            "name": "relayHub",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9830,
                                                            "src": "5034:8:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9895,
                                                            "name": "relayManager",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9885,
                                                            "src": "5044:12:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9893,
                                                        "name": "getRelayInfo",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9792,
                                                        "src": "5021:12:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_struct$_RelayInfo_$5917_memory_ptr_$",
                                                            "typeString": "function (address,address) view returns (struct IRelayRegistrar.RelayInfo memory)"
                                                        }
                                                    },
                                                    "id": 9896,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5021:36:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                        "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4992:65:44"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 9906,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 9901,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 9898,
                                                                "name": "relayInfo",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9892,
                                                                "src": "5092:9:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                                    "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                                }
                                                            },
                                                            "id": 9899,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "lastSeenBlockNumber",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5904,
                                                            "src": "5092:29:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "id": 9900,
                                                            "name": "oldestBlockNumber",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9832,
                                                            "src": "5124:17:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "5092:49:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "||",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 9905,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 9902,
                                                                "name": "relayInfo",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9892,
                                                                "src": "5161:9:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                                    "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                                }
                                                            },
                                                            "id": 9903,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "lastSeenTimestamp",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5906,
                                                            "src": "5161:27:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint40",
                                                                "typeString": "uint40"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "id": 9904,
                                                            "name": "oldestBlockTimestamp",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9834,
                                                            "src": "5191:20:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "5161:50:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "5092:119:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 9909,
                                                "nodeType": "IfStatement",
                                                "src": "5071:196:44",
                                                "trueBody": {
                                                    "id": 9908,
                                                    "nodeType": "Block",
                                                    "src": "5226:41:44",
                                                    "statements": [
                                                        {
                                                            "id": 9907,
                                                            "nodeType": "Continue",
                                                            "src": "5244:8:44"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "clauses": [
                                                    {
                                                        "block": {
                                                            "id": 9916,
                                                            "nodeType": "Block",
                                                            "src": "5400:15:44",
                                                            "statements": []
                                                        },
                                                        "errorName": "",
                                                        "id": 9917,
                                                        "nodeType": "TryCatchClause",
                                                        "src": "5400:15:44"
                                                    },
                                                    {
                                                        "block": {
                                                            "id": 9922,
                                                            "nodeType": "Block",
                                                            "src": "5454:41:44",
                                                            "statements": [
                                                                {
                                                                    "id": 9921,
                                                                    "nodeType": "Continue",
                                                                    "src": "5472:8:44"
                                                                }
                                                            ]
                                                        },
                                                        "errorName": "",
                                                        "id": 9923,
                                                        "nodeType": "TryCatchClause",
                                                        "parameters": {
                                                            "id": 9920,
                                                            "nodeType": "ParameterList",
                                                            "parameters": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 9919,
                                                                    "mutability": "mutable",
                                                                    "name": "",
                                                                    "nameLocation": "-1:-1:-1",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 9923,
                                                                    "src": "5423:12:44",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 9918,
                                                                        "name": "bytes",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "5423:5:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                                            "typeString": "bytes"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "src": "5422:31:44"
                                                        },
                                                        "src": "5416:79:44"
                                                    }
                                                ],
                                                "externalCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 9914,
                                                            "name": "relayManager",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9885,
                                                            "src": "5386:12:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 9911,
                                                                    "name": "relayHub",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9830,
                                                                    "src": "5351:8:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 9910,
                                                                "name": "IRelayHub",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5896,
                                                                "src": "5341:9:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IRelayHub_$5896_$",
                                                                    "typeString": "type(contract IRelayHub)"
                                                                }
                                                            },
                                                            "id": 9912,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5341:19:44",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                                "typeString": "contract IRelayHub"
                                                            }
                                                        },
                                                        "id": 9913,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "verifyRelayManagerStaked",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5857,
                                                        "src": "5341:44:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$__$",
                                                            "typeString": "function (address) view external"
                                                        }
                                                    },
                                                    "id": 9915,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5341:58:44",
                                                    "tryCall": true,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9924,
                                                "nodeType": "TryStatement",
                                                "src": "5337:158:44"
                                            },
                                            {
                                                "expression": {
                                                    "id": 9930,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 9925,
                                                            "name": "info",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9842,
                                                            "src": "5508:4:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                                                "typeString": "struct IRelayRegistrar.RelayInfo memory[] memory"
                                                            }
                                                        },
                                                        "id": 9928,
                                                        "indexExpression": {
                                                            "id": 9927,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "++",
                                                            "prefix": false,
                                                            "src": "5513:8:44",
                                                            "subExpression": {
                                                                "id": 9926,
                                                                "name": "filled",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9854,
                                                                "src": "5513:6:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "5508:14:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 9929,
                                                        "name": "relayInfo",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9892,
                                                        "src": "5525:9:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                            "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                        }
                                                    },
                                                    "src": "5508:26:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayInfo_$5917_memory_ptr",
                                                        "typeString": "struct IRelayRegistrar.RelayInfo memory"
                                                    }
                                                },
                                                "id": 9931,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5508:26:44"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 9934,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 9932,
                                                        "name": "filled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9854,
                                                        "src": "5552:6:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "id": 9933,
                                                        "name": "maxCount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9836,
                                                        "src": "5562:8:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5552:18:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 9936,
                                                "nodeType": "IfStatement",
                                                "src": "5548:45:44",
                                                "trueBody": {
                                                    "id": 9935,
                                                    "nodeType": "Break",
                                                    "src": "5588:5:44"
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 9880,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 9877,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9874,
                                            "src": "4910:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 9878,
                                                "name": "items",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9848,
                                                "src": "4914:5:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[] storage pointer"
                                                }
                                            },
                                            "id": 9879,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4914:12:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4910:16:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 9938,
                                    "initializationExpression": {
                                        "assignments": [
                                            9874
                                        ],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 9874,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "4903:1:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9938,
                                                "src": "4895:9:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9873,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4895:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 9876,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 9875,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4907:1:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4895:13:44"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 9882,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "4928:3:44",
                                            "subExpression": {
                                                "id": 9881,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9874,
                                                "src": "4928:1:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 9883,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4928:3:44"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "4890:714:44"
                                },
                                {
                                    "AST": {
                                        "nodeType": "YulBlock",
                                        "src": "5622:24:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "info",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5631:4:44"
                                                        },
                                                        {
                                                            "name": "filled",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5637:6:44"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5624:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5624:20:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5624:20:44"
                                            }
                                        ]
                                    },
                                    "evmVersion": "london",
                                    "externalReferences": [
                                        {
                                            "declaration": 9854,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "5637:6:44",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 9842,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "5631:4:44",
                                            "valueSize": 1
                                        }
                                    ],
                                    "id": 9939,
                                    "nodeType": "InlineAssembly",
                                    "src": "5613:33:44"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 9828,
                            "nodeType": "StructuredDocumentation",
                            "src": "4427:31:44",
                            "text": "@inheritdoc IRelayRegistrar"
                        },
                        "functionSelector": "55fb8d60",
                        "id": 9941,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "readRelayInfosInRange",
                        "nameLocation": "4472:21:44",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 9838,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "4649:8:44"
                        },
                        "parameters": {
                            "id": 9837,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9830,
                                    "mutability": "mutable",
                                    "name": "relayHub",
                                    "nameLocation": "4511:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4503:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9829,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4503:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9832,
                                    "mutability": "mutable",
                                    "name": "oldestBlockNumber",
                                    "nameLocation": "4537:17:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4529:25:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9831,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4529:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9834,
                                    "mutability": "mutable",
                                    "name": "oldestBlockTimestamp",
                                    "nameLocation": "4572:20:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4564:28:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9833,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4564:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 9836,
                                    "mutability": "mutable",
                                    "name": "maxCount",
                                    "nameLocation": "4610:8:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4602:16:44",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 9835,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4602:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4493:131:44"
                        },
                        "returnParameters": {
                            "id": 9843,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 9842,
                                    "mutability": "mutable",
                                    "name": "info",
                                    "nameLocation": "4699:4:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9941,
                                    "src": "4680:23:44",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 9840,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 9839,
                                                "name": "RelayInfo",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5917,
                                                "src": "4680:9:44"
                                            },
                                            "referencedDeclaration": 5917,
                                            "src": "4680:9:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RelayInfo_$5917_storage_ptr",
                                                "typeString": "struct IRelayRegistrar.RelayInfo"
                                            }
                                        },
                                        "id": 9841,
                                        "nodeType": "ArrayTypeName",
                                        "src": "4680:11:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_RelayInfo_$5917_storage_$dyn_storage_ptr",
                                            "typeString": "struct IRelayRegistrar.RelayInfo[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4670:39:44"
                        },
                        "scope": 9942,
                        "src": "4463:1189:44",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 9943,
                "src": "700:4954:44",
                "usedErrors": []
            }
        ],
        "src": "0:5654:44"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.7+commit.e28d00a7.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.1.0",
    "updatedAt": "2023-03-16T16:54:15.259Z",
    "devdoc": {
        "kind": "dev",
        "methods": {
            "getCreationBlock()": {
                "returns": {
                    "_0": "The block number in which the contract has been deployed."
                }
            },
            "getRelayInfo(address,address)": {
                "params": {
                    "relayHub": "The address of the `RelayHub` contract for which this action is performed.",
                    "relayManager": "An address of a Relay Manager."
                },
                "returns": {
                    "_0": "All the details of the given Relay Manager's registration. Throws if relay not found for `RelayHub`."
                }
            },
            "getRelayRegistrationMaxAge()": {
                "returns": {
                    "_0": "The maximum age the relay is considered registered by default by this `RelayRegistrar`, in seconds."
                }
            },
            "owner()": {
                "details": "Returns the address of the current owner."
            },
            "readRelayInfos(address)": {
                "params": {
                    "relayHub": "The address of the `RelayHub` contract for which this action is performed."
                },
                "returns": {
                    "info": "The list of `RelayInfo`s of registered Relay Servers"
                }
            },
            "readRelayInfosInRange(address,uint256,uint256,uint256)": {
                "params": {
                    "maxCount": "The maximum amount of relays to be returned by this function.",
                    "oldestBlockNumber": "The latest block number in which a Relay Server may be registered.",
                    "oldestBlockTimestamp": "The latest block timestamp in which a Relay Server may be registered.",
                    "relayHub": "The address of the `RelayHub` contract for which this action is performed."
                },
                "returns": {
                    "info": "The list of `RelayInfo`s of registered Relay Servers"
                }
            },
            "registerRelayServer(address,bytes32[3])": {
                "params": {
                    "relayHub": "The address of the `RelayHub` contract for which this action is performed.",
                    "url": "The URL of the Relay Server that is listening to the clients' requests."
                }
            },
            "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
            },
            "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
            },
            "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
            }
        },
        "title": "The RelayRegistrar Implementation",
        "version": 1
    },
    "userdoc": {
        "events": {
            "RelayServerRegistered(address,address,bytes32[3])": {
                "notice": "Emitted when a relay server registers or updates its details. Looking up these events allows a client to discover registered Relay Servers."
            }
        },
        "kind": "user",
        "methods": {
            "readRelayInfos(address)": {
                "notice": "Read relay info of registered Relay Server from an on-chain storage."
            },
            "readRelayInfosInRange(address,uint256,uint256,uint256)": {
                "notice": "Read relay info of registered Relay Server from an on-chain storage."
            },
            "registerRelayServer(address,bytes32[3])": {
                "notice": "This function is called by Relay Servers in order to register or to update their registration."
            },
            "setRelayRegistrationMaxAge(uint256)": {
                "notice": "Change the maximum relay registration age."
            }
        },
        "notice": "Keeps a list of registered relayers.Provides view functions to read the list of registered relayers and filters out invalid ones.Protects the list from spamming entries: only staked relayers are added.",
        "version": 1
    }
}
